Skip to content

Commit

Permalink
fix: Added MasamuneControllerBase.
Browse files Browse the repository at this point in the history
  • Loading branch information
mathrunet committed Feb 17, 2023
1 parent ba10d1f commit 40c050b
Show file tree
Hide file tree
Showing 4 changed files with 82 additions and 4 deletions.
2 changes: 2 additions & 0 deletions packages/masamune/lib/masamune.dart
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ library masamune;
import 'dart:async';

// Flutter imports:
import 'package:flutter/foundation.dart';
import 'package:flutter/gestures.dart';
import 'package:flutter/material.dart';

Expand Down Expand Up @@ -44,6 +45,7 @@ part 'scoped/controller.dart';
part 'scoped/global.dart';
part 'src/masamune_app.dart';
part 'src/masamune_adapter.dart';
part 'src/masamune_controller.dart';

part 'ui/grid_builder.dart';
part 'ui/list_builder.dart';
Expand Down
76 changes: 76 additions & 0 deletions packages/masamune/lib/src/masamune_controller.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
part of masamune;

/// Abstract class to inherit when you want to create a controller using [MasamuneAdapter].
///
/// Specify the value to manage in [TValue], and specify [MasamuneAdapter] in [TAdapter].
///
/// If you do not specify [adapter], [primaryAdapter] is used.
///
/// Since it inherits [ChangeNotifier], you can use [addListener] and [removeListener] to monitor changes in the value.
///
/// [MasamuneAdapter]を利用したコントローラーを作成したい場合に継承する抽象クラスです。
///
/// [TValue]に管理する値を指定し、[TAdapter][MasamuneAdapter]を指定します。
///
/// [adapter]を指定しない場合は、[primaryAdapter]を使用します。
///
/// [ChangeNotifier]を継承しているので、[addListener][removeListener]を使用して値の変更を監視できます。
abstract class MasamuneControllerBase<TValue, TAdapter extends MasamuneAdapter>
extends ChangeNotifier implements ValueListenable<TValue?> {
/// Abstract class to inherit when you want to create a controller using [MasamuneAdapter].
///
/// Specify the value to manage in [TValue], and specify [MasamuneAdapter] in [TAdapter].
///
/// If you do not specify [adapter], [primaryAdapter] is used.
///
/// Since it inherits [ChangeNotifier], you can use [addListener] and [removeListener] to monitor changes in the value.
///
/// [MasamuneAdapter]を利用したコントローラーを作成したい場合に継承する抽象クラスです。
///
/// [TValue]に管理する値を指定し、[TAdapter][MasamuneAdapter]を指定します。
///
/// [adapter]を指定しない場合は、[primaryAdapter]を使用します。
///
/// [ChangeNotifier]を継承しているので、[addListener][removeListener]を使用して値の変更を監視できます。
MasamuneControllerBase({TAdapter? adapter}) : _adapter = adapter;

/// [TAdapter] to be used.
///
/// If not specified, [primaryAdapter] is used.
///
/// 使用する[TAdapter]
///
/// 指定されない場合は[primaryAdapter]が利用されます。
TAdapter get adapter {
return _adapter ?? primaryAdapter;
}

final TAdapter? _adapter;

/// Specifies the default [TAdapter] if [adapter] is [Null].
///
/// [adapter][Null]だった場合のデフォルトの[TAdapter]を指定します。
TAdapter get primaryAdapter;

@override
TValue? get value => _value;

/// Set method is used to update the current state.
///
/// The argument [value] is the value of the new state.
/// If it matches the existing value, nothing is done and the process ends.
///
/// セットメソッドを使用して、現在のステートを更新します。
///
/// 引数 [value] は、新しいステートの値です。
/// 既存の値と一致する場合は何も行われず、処理が終了します。
@protected
void set(TValue? value) {
if (_value == value) {
return;
}
_value = value;
}

TValue? _value;
}
4 changes: 2 additions & 2 deletions packages/masamune/pubspec.lock
Original file line number Diff line number Diff line change
Expand Up @@ -412,10 +412,10 @@ packages:
dependency: "direct main"
description:
name: masamune_annotation
sha256: bbae19221555dfe0c2b273d97003cc39363d2b3ac9e57487206e33e9b0b342b0
sha256: a5908f182b036888764647507464edf12218cdcc289c7e66ffddfaa93b31ca2c
url: "https://pub.dev"
source: hosted
version: "1.3.2"
version: "1.3.3"
matcher:
dependency: transitive
description:
Expand Down
4 changes: 2 additions & 2 deletions packages/masamune_builder/pubspec.lock
Original file line number Diff line number Diff line change
Expand Up @@ -365,10 +365,10 @@ packages:
dependency: "direct main"
description:
name: masamune_annotation
sha256: bbae19221555dfe0c2b273d97003cc39363d2b3ac9e57487206e33e9b0b342b0
sha256: a5908f182b036888764647507464edf12218cdcc289c7e66ffddfaa93b31ca2c
url: "https://pub.dev"
source: hosted
version: "1.3.2"
version: "1.3.3"
matcher:
dependency: transitive
description:
Expand Down

0 comments on commit 40c050b

Please sign in to comment.