index_page.dart 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. import 'package:flutter/material.dart';
  2. import 'package:flutter_2048/service/gameInit.dart';
  3. import 'package:flutter_2048/views/Blocks.dart';
  4. import 'package:flutter_2048/views/Scores.dart';
  5. import 'package:flutter_redux/flutter_redux.dart';
  6. import 'package:flutter_screenutil/flutter_screenutil.dart';
  7. import 'package:redux/redux.dart';
  8. import 'package:redux_thunk/redux_thunk.dart';
  9. import '../views/GameBg.dart';
  10. import '../views/ModeSelector.dart';
  11. import '../views/Playground.dart';
  12. import '../model/Display.dart';
  13. import '../reducers/index.dart';
  14. import '../store/GameState.dart';
  15. /// 首页
  16. class IndexPage extends StatelessWidget {
  17. @override
  18. Widget build(BuildContext context) {
  19. //ScreenUtil 初始化实例
  20. ScreenUtil.init(
  21. BoxConstraints(
  22. maxWidth: MediaQuery.of(context).size.width,
  23. maxHeight: MediaQuery.of(context).size.height),
  24. designSize: Size(360, 640),
  25. orientation: Orientation.portrait); // 竖屏
  26. return StoreProvider(
  27. store: Store<GameState>(
  28. gameReducer,
  29. middleware: [thunkMiddleware],
  30. initialState: GameState.initial(4),
  31. ),
  32. child: StoreConnector<GameState, GameProps>(
  33. converter: (store) =>
  34. GameProps(started: store.state.status.total != null),
  35. onInit: (store) {
  36. gameInit(store, 4);
  37. },
  38. builder: (context, props) {
  39. return props.started
  40. ? Container(
  41. margin: EdgeInsets.all(Display.borderMargin),
  42. child: Column(
  43. mainAxisAlignment: MainAxisAlignment.spaceBetween,
  44. crossAxisAlignment: CrossAxisAlignment.stretch,
  45. children: <Widget>[
  46. ModeSelector(),
  47. Scores(),
  48. Stack(
  49. children: <Widget>[
  50. GameBg(),
  51. Blocks(),
  52. Playground(),
  53. ],
  54. ),
  55. ],
  56. ),
  57. )
  58. : Container();
  59. },
  60. ),
  61. );
  62. }
  63. }
  64. class GameProps {
  65. bool started;
  66. GameProps({this.started});
  67. }