【发布时间】:2020-08-12 11:04:18
【问题描述】:
使用 ChangeNotifierProxyProvider 时,我的应用程序无法运行。
链接到我的项目是:https://github.com/BH4R47k/Practice-Shopping-App.git 我希望有人下载该项目并运行它来解决我的问题。
查看我使用 ChangeNotifierProxyProvider 的 main.dart 文件。我想知道我是否做错了什么(不仅在 main.dart 中,而且在整个项目中 [上面给出了链接]),如果有人解决我的问题,我将不胜感激。
我还将我的代码放在 main.dart 中
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import './screens/splash_screen.dart';
import './screens/cart_screen.dart';
import './screens/products_overview_screen.dart';
import './screens/product_detail_screen.dart';
import './providers/products.dart';
import './providers/cart.dart';
import './providers/orders.dart';
import './providers/auth.dart';
import './screens/orders_screen.dart';
import './screens/user_products_screen.dart';
import './screens/edit_product_screen.dart';
import './screens/auth_screen.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MultiProvider(
providers: [
ChangeNotifierProvider.value(
value: Auth(),
),
ChangeNotifierProxyProvider<Auth, Products>(
create: (context) => Products(
Provider.of<Products>(context).authToken,
Provider.of<Products>(context).userId,
Provider.of<Products>(context).items,
),
update: (context, auth, previousProducts) => Products(
auth.token,
auth.userId,
previousProducts == null ? [] : previousProducts.items,
),
),
ChangeNotifierProvider.value(
value: Cart(),
),
ChangeNotifierProxyProvider<Auth, Orders>(
create: (context) => Orders(
Provider.of<Orders>(context).authToken,
Provider.of<Orders>(context).userId,
Provider.of<Orders>(context).orders,
),
update: (context, auth, previousOrders) => Orders(
auth.token,
auth.userId,
previousOrders == null ? [] : previousOrders.orders,
),
),
],
child: Consumer<Auth>(
builder: (ctx, auth, _) => MaterialApp(
title: 'MyShop',
theme: ThemeData(
primarySwatch: Colors.purple,
accentColor: Colors.deepOrange,
fontFamily: 'Lato',
),
home: auth.isAuth
? ProductsOverviewScreen()
: FutureBuilder(
future: auth.tryAutoLogin(),
builder: (ctx, authResultSnapshot) =>
authResultSnapshot.connectionState ==
ConnectionState.waiting
? SplashScreen()
: AuthScreen(),
),
routes: {
ProductDetailScreen.routeName: (ctx) => ProductDetailScreen(),
CartScreen.routeName: (ctx) => CartScreen(),
OrdersScreen.routeName: (ctx) => OrdersScreen(),
UserProductsScreen.routeName: (ctx) => UserProductsScreen(),
EditProductScreen.routeName: (ctx) => EditProductScreen(),
},
),
),
);
}
}
提前致谢。
【问题讨论】:
标签: firebase flutter dart firebase-authentication flutter-layout