diff --git a/lib/app.dart b/lib/app.dart index c755039..0935237 100644 --- a/lib/app.dart +++ b/lib/app.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:thesis_shop/bloc_provider.dart'; import 'package:thesis_shop/route_key.dart'; import 'package:thesis_shop/screens/cart/cart_screen.dart'; import 'package:thesis_shop/screens/product_list/product_list_screen.dart'; @@ -12,18 +13,22 @@ class ThesisShopApp extends StatelessWidget { @override Widget build(BuildContext context) { - return MaterialApp( - title: 'Thesis Shop', - theme: ThemeData(primarySwatch: Colors.red), - darkTheme: ThemeData( - primarySwatch: Colors.red, - brightness: Brightness.dark, + final blocProvider = BlocProvider(); + return AppState( + blocs: blocProvider, + child: MaterialApp( + title: 'Thesis Shop', + theme: ThemeData(primarySwatch: Colors.red), + darkTheme: ThemeData( + primarySwatch: Colors.red, + brightness: Brightness.dark, + ), + routes: { + RouteKey.products: (context) => const ProductListScreen(), + RouteKey.cart: (context) => const CartScreen(), + }.mapKeys((key) => key.name), + initialRoute: 'products', ), - routes: { - RouteKey.products: (context) => const ProductListScreen(), - RouteKey.cart: (context) => const CartScreen(), - }.mapKeys((key) => key.name), - initialRoute: 'products', ); } } diff --git a/lib/bloc_provider.dart b/lib/bloc_provider.dart new file mode 100644 index 0000000..525497e --- /dev/null +++ b/lib/bloc_provider.dart @@ -0,0 +1,26 @@ +import 'package:flutter/material.dart'; + +class BlocProvider { + // TODO TBD +} + +class AppState extends InheritedWidget { + final BlocProvider blocs; + const AppState({ + Key? key, + required this.blocs, + required Widget child, + }) : super(key: key, child: child); + + static AppState of(BuildContext context) { + final AppState? result = + context.dependOnInheritedWidgetOfExactType(); + assert(result != null, 'No AppState found in context'); + return result!; + } + + @override + bool updateShouldNotify(AppState oldWidget) { + return true; + } +}