オーバーライド
Stateの流れ(ライフサイクル)
構成
21. Quiz: Debug Stateful Widgets
画面見えないので「Padding」追加した。 こんな感じに
import 'package:flutter/material.dart'; void main() => runApp(MyApp()); class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( home: MyHomePage(), ); } } class MyHomePage extends StatefulWidget { MyHomePage(); @override createState() => _MyHomePageState(); } class _MyHomePageState extends State<MyHomePage> { int _counter = 0; @override Widget build(BuildContext context) { return Scaffold( body: Center( child: Column( children: <Widget>[ // ここ勝手に追加しました。しないと見えないw Padding( padding: EdgeInsets.all(20.0), ), Text( 'You have pushed the button this many times:', ), Text( '$_counter', ), ], ), ), floatingActionButton: FloatingActionButton( onPressed: () { _counter++; }, child: Icon(Icons.add), ), ); } }
QUIZ QUESTION
Examine the code above and determine where setState should be called.
→ 上のコードを調べて、setState
を呼び出す場所を決定してください。
- When the counter variable is incremented in
_MyHomePageState
→_MyHomePageState
ないのカウンターをインクリメントしているところ。
onPressed: () { setState(() { _counter++; }); },
この記事が参考になる FlutterのsetStateとは? - Qiita setStateではこの足したことをクラスに伝えるということをしている。 この伝える処理があることで+ボタンを押すと表示される数字が増えている。setStateがないと+ボタンを押しても画面が更新されず表示されている数字が増えない。 ちなみに以下でもいいっっぽい。
_counter++ setState((){});
Inside the Text widget for the
$_counter
, in_MyHomePageState
→_MyHomePageState
内のTextウィジットの内部。ウィジットで呼ぶのはおかしいかと。We should nest
return MaterialApp
in a setState, inMyApp
→MyApp
内のreturn MaterialApp
でネストしてsetStateを入れる え・・・無理
return MaterialApp( home: MyHomePage(), );
- We don't need to
setState()
for incrementing an integer →integerでインクリメントするためにsetState()
はいらない。 やらんと更新がないよ・・・。