import 'package:flutter/material.dart'; import 'package:redux/redux.dart'; import 'package:flutter_redux/flutter_redux.dart'; // 一個簡單的動做:增量 enum Actions { Increment } void main() { // reducer + initState = store final store = Store<int>((int state, dynamic action) { if (action == Actions.Increment) { return state + 1; } return state; }, initialState: 0); runApp(new MyApp(store: store)); } class MyApp extends StatelessWidget { MyApp({Key key, this.store}) : super(key: key); final Store<int> store; @override Widget build(BuildContext context) { return StoreProvider<int>( // 將給定的Redux Store傳遞給請求它的全部後代 store: store, child: MaterialApp( home: MyHome(), ), ); } } class MyHome extends StatefulWidget { @override _MyHomeState createState() => _MyHomeState(); } class _MyHomeState extends State<MyHome> { @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text('Hello'), ), floatingActionButton: StoreConnector<int, VoidCallback>( converter: (store) => () => store.dispatch(Actions.Increment), builder: (context, cb) => FloatingActionButton( onPressed: cb, child: Icon(Icons.add), ), ), body: Column( mainAxisAlignment: MainAxisAlignment.center, children: <Widget>[ StoreConnector<int, String>( converter: (store) => store.state.toString(), builder: (context, count) { return Center(child: Text('$count')); }), ], ), ); } }