FlutterとDartの勉強をしているのですが、Classのうまい書き方がわかりません。
例えばSharedPreferencesに書き込んだ値を読み込みたい場合、
下記のようなFuture<bool>のような戻り値を返す方法があると思います。
この場合、
Dart
1 Future<bool> futureBool = spc.loadBool('testBool', true); 2 futureBool.then((content) => setState(() { 3 testBool = content; 4 }));
のようなコードを書くと用意した変数に代入できたのですが、
不要の変数を用意したりソースコードが長くなってしまう気がします。
Dart
1// void loadBool2(String key, bool defaultValue, bool variable) async 2// testBool = spc.loadBool('testBool', true);
のvariableに指定した変数に直接値を渡す、みたいに1行で取得する実装方法はないでしょうか。
Dart
1class SharedPreferencesController { 2 3 // Bool型を読込 4 Future<bool> loadBool(String key, bool defaultValue) async { 5 final SharedPreferences prefs = await SharedPreferences.getInstance(); 6 // キーが存在しているか 7 if (prefs.containsKey(key)) { 8 return prefs.getBool(key); 9 } else { 10 return defaultValue; 11 } 12 } 13 14 // Bool型を読込 test用 15 void loadBool2(String key, bool defaultValue, bool variable) async { 16 final SharedPreferences prefs = await SharedPreferences.getInstance(); 17 // キーが存在しているか 18 if (prefs.containsKey(key)) { 19 variable = prefs.getBool(key); 20 } else { 21 variable = defaultValue; 22 } 23 } 24} 25 26class SampleScreen extends StatefulWidget { 27 28 _SampleScreenState createState() => _SampleScreenState(); 29} 30 31class _SampleScreenState extends State<SampleScreen> { 32 SharedPreferencesController spc = new SharedPreferencesController(); 33 bool testBool; 34 35 36 // 起動時に初期化 37 void initState() { 38 super.initState(); 39 40 // Bool型を読み込み 41 Future<bool> futureBool = spc.loadBool('testBool', true); 42 futureBool.then((content) => setState(() { 43 testBool = content; 44 })); 45 46 // 引数に指定した変数に直接代入したい (参照渡し?) 47 //spc.loadBool2('testBool', true, testBool); 48 49 // 戻り値を直接Bool型にしたい Future<bool>でも1行で書きたい 50 //testBool = await spc.loadBool('testBool', true); 51 //testBool = spc.loadBool('testBool', true); 52 } 53}
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。