-
Notifications
You must be signed in to change notification settings - Fork 556
Expand file tree
/
Copy pathmain.dart
More file actions
115 lines (107 loc) · 4.57 KB
/
main.dart
File metadata and controls
115 lines (107 loc) · 4.57 KB
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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
import 'dart:async';
import 'package:dev_rpg/src/about_screen.dart';
import 'package:dev_rpg/src/code_chomper/code_chomper.dart';
import 'package:dev_rpg/src/game_screen.dart';
import 'package:dev_rpg/src/shared_state/game/world.dart';
import 'package:dev_rpg/src/shared_state/user.dart';
import 'package:dev_rpg/src/style_sphinx/axis_questions.dart';
import 'package:dev_rpg/src/style_sphinx/flex_questions.dart';
import 'package:dev_rpg/src/style_sphinx/kittens.dart';
import 'package:dev_rpg/src/style_sphinx/sphinx_image.dart';
import 'package:dev_rpg/src/style_sphinx/sphinx_screen.dart';
import 'package:dev_rpg/src/welcome_screen.dart';
import 'package:flare_flutter/flare_cache.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:provider/provider.dart';
void main() {
// Don't prune the Flare cache, keep loaded Flare files warm and ready
// to be re-displayed.
FlareCache.doesPrune = false;
runApp(MyApp());
}
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
final World world = World();
@override
Widget build(BuildContext context) {
return MultiProvider(
providers: [
ChangeNotifierProvider(builder: (_) => User()),
ChangeNotifierProvider.value(value: world),
ChangeNotifierProvider.value(value: world.characterPool),
ChangeNotifierProvider.value(value: world.taskPool),
ChangeNotifierProvider.value(value: world.company),
ChangeNotifierProvider.value(value: world.company.users),
ChangeNotifierProvider.value(value: world.company.joy),
ChangeNotifierProvider.value(value: world.company.coin),
],
child: MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
brightness: Brightness.dark,
primarySwatch: Colors.orange,
canvasColor: Colors.transparent),
routes: {
'/': (context) => WelcomeScreen(),
'/gameloop': (context) => GameScreen(),
'/about': (context) => AboutScreen(),
CodeChomper.miniGameRouteName: (context) {
String filename =
ModalRoute.of(context).settings.arguments as String;
return CodeChomper(filename);
},
SphinxScreen.miniGameRouteName: (context) => const SphinxScreen(),
SphinxScreen.fullGameRouteName: (context) =>
const SphinxScreen(fullGame: true),
ColumnQuestion.routeName: (context) => const ColumnQuestion(),
RowQuestion.routeName: (context) => const RowQuestion(),
StackQuestion.routeName: (context) => const StackQuestion(),
MainAxisCenterQuestion.routeName: (context) =>
const MainAxisCenterQuestion(),
MainAxisSpaceAroundQuestion.routeName: (context) =>
const MainAxisSpaceAroundQuestion(),
MainAxisSpaceBetweenQuestion.routeName: (context) =>
const MainAxisSpaceBetweenQuestion(),
MainAxisStartQuestion.routeName: (context) =>
const MainAxisStartQuestion(),
MainAxisEndQuestion.routeName: (context) =>
const MainAxisEndQuestion(),
MainAxisSpaceEvenlyQuestion.routeName: (context) =>
const MainAxisSpaceEvenlyQuestion(),
RowMainAxisEndQuestion.routeName: (context) =>
const RowMainAxisEndQuestion(),
RowMainAxisStartQuestion.routeName: (context) =>
const RowMainAxisStartQuestion(),
RowMainAxisSpaceBetween.routeName: (context) =>
const RowMainAxisSpaceBetween(),
},
));
}
@override
void initState() {
// Schedule a microtask that warms up the image cache with all of the style
// sphinx images. This will run after the build method is executed, but
// before the style sphinx is displayed.
scheduleMicrotask(() {
precacheImage(SphinxScreen.pyramid, context);
precacheImage(SphinxScreen.background, context);
precacheImage(SphinxImage.provider, context);
precacheImage(SphinxWithoutGlassesImage.provider, context);
precacheImage(SphinxGlassesImage.provider, context);
precacheImage(KittyBed.redProvider, context);
precacheImage(KittyBed.greenProvider, context);
precacheImage(Kitty.orangeProvider, context);
precacheImage(Kitty.yellowProvider, context);
});
super.initState();
}
@override
void dispose() {
world.dispose();
super.dispose();
}
}