Kriskev
10/3/2018 - 9:35 AM

ScopedModel

On Wrap l'ensemble de l'application de sorte à ce que l'etat de l'objet soit conscervé dans toute l'application On Warap generalement le matérialApp . ScopModel prend un child où l'on va mettre le Widget MaterialApp ensuite on instancie le model qui va parcourir toute l'application

class _MyApp extends State<MyApp> {
  _MyApp() {
    print("_MyApp constructeur");
  }
  @override
  Widget build(BuildContext context) {
    print("_MyApp build");
    return ScopedModel<ProductsModel>(
      model: ProductsModel(),
      child: MaterialApp(
        // debugShowMaterialGrid: true,
        theme: ThemeData(
            primaryColor: Colors.red,
            // brightness: Brightness.dark,
            accentColor: Colors.orange,
            primarySwatch: Colors.deepPurple),
        // home: AuthPage(),
        routes: {
          '/': (BuildContext context) => AuthPage(),
          '/products': (BuildContext context) =>
              ProductsPage(),
          '/admin': (BuildContext context) => AdminProductPage()
        },

        onGenerateRoute: (RouteSettings settings) {
          List<String> patchElement = settings.name.split('/');
          if (patchElement[0] != "") {
            return null;
          }
          if (patchElement[1] == "product") {
            int index = int.parse(patchElement[2]);
            return MaterialPageRoute<bool>(
                builder: (BuildContext context) => ProductPage(index)
            );
          }

          return null;
        },
        onUnknownRoute: (RouteSettings settings) {
          return MaterialPageRoute(builder: (BuildContext context) {
            return null;
          });
        },
      ),
    );
  }
}