1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
| void main() { runApp(const MyApp()); }
class MyApp extends StatelessWidget { const MyApp({Key? key}) : super(key: key);
@override Widget build(BuildContext context) { return MaterialApp( title: 'Flutter Demo', theme: ThemeData(primarySwatch: Colors.blue,), home: const MyHomePage(title: 'StatefulWidget 的简化'), ); } }
class MyHomePage extends StatefulWidget { const MyHomePage({Key? key, required this.title}) : super(key: key);
final String title;
@override State<MyHomePage> createState() => _MyHomePageState(); }
class _MyHomePageState extends State<MyHomePage> {
var _switchValue = false; @override Widget build(BuildContext context) {
return Scaffold( appBar: AppBar( title: Text(widget.title), ), body: Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: <Widget>[ const SizedBox(height: 20), //距离顶部距离 const Text('Flutter-Switch'), _buildFlutterSwitch(), const Text('ValueBuilder-Sample'), _buildValueBuilder(), const Text('ObxValue-Sample'), _buildObxValue() ], ), ), ); } //FlutterBuilder Widget _buildFlutterSwitch(){ return Switch( value: _switchValue, onChanged: (value) { setState(() { _switchValue = value; }); }); } //ValueBuilder Widget _buildValueBuilder() { return ValueBuilder<bool?>( initialValue: false, builder: (value, update) => Switch(value: value!, onChanged: (flag) => update(flag)), onUpdate: (value) => print("Value updated: $value"), onDispose: () => print("Widget unmounted"), ); }
//ObxValue Widget _buildObxValue() { return ObxValue( (data) => Switch( value: (data as RxBool).value, onChanged: (flag){ data.value=flag; print("Value updated: $flag"); }, // Rx has a _callable_ function! You could use (flag) => data.value = flag, ), false.obs, ); } }
|