Search code examples
flutterdartflutter-widget

type '_Type' is not a subtype of type 'Widget?'


here in my code the problem with the consumer Auth, i found a similar q here but nor relevant with my error i tried to much ways to solve it, can anyone help please?

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MultiProvider(
        providers: [
          ChangeNotifierProvider.value(value: Auth()),
          ChangeNotifierProxyProvider<Auth, ProductProvider>(
            update: (ctx, auth, previousprod) => ProductProvider(
                auth.token, previousprod == null ? [] : previousprod.items),
          ),
          ChangeNotifierProvider.value(
            value: Cart(),
          ),
          ChangeNotifierProvider.value(
            value: Order(),
          )
        ],
        child: Consumer<Auth>(
          builder: (ctx, auth, _) => MaterialApp(
            debugShowCheckedModeBanner: false,
            title: 'MyShop',
            theme: ThemeData(
                primarySwatch: Colors.purple,
                accentColor: Colors.deepOrange,
                fontFamily: 'Lato'),
            home: auth.isAuth ? ProductOverviewScreen : AuthScreen(),
            routes: {
              // '/':(ctx)=> ProductOverviewScreen(),
              ProductDetailScreen.routName: (ctx) => ProductDetailScreen(),
              CartScreen.routName: (ctx) => CartScreen(),
              OrderScreen.routName: (ctx) => OrderScreen(),
              ProductOverviewScreen.routName: (ctx) => ProductOverviewScreen(),
              UserProductsScreen.routName: (ctx) => UserProductsScreen(),
              EditProductScreen.routName: (ctx) => EditProductScreen(),
            },
          ),
        ));
  }
}

Solution

  • Believe this is the fix just copy paste and let me know :)

    class MyApp extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return MultiProvider(
            providers: [
              ChangeNotifierProvider.value(value: Auth()),
              ChangeNotifierProxyProvider<Auth, ProductProvider>(
                update: (ctx, auth, previousprod) => ProductProvider(
                    auth.token, previousprod == null ? [] : previousprod.items),
              ),
              ChangeNotifierProvider.value(
                value: Cart(),
              ),
              ChangeNotifierProvider.value(
                value: Order(),
              )
            ],
            child: Consumer<Auth>(
              builder: (ctx, auth, _) => MaterialApp(
                debugShowCheckedModeBanner: false,
                title: 'MyShop',
                theme: ThemeData(
                    primarySwatch: Colors.purple,
                    accentColor: Colors.deepOrange,
                    fontFamily: 'Lato'),
                home: auth.isAuth ? ProductOverviewScreen() : AuthScreen(),
                routes: {
                  // '/':(ctx)=> ProductOverviewScreen(),
                  ProductDetailScreen.routName: (ctx) => ProductDetailScreen(),
                  CartScreen.routName: (ctx) => CartScreen(),
                  OrderScreen.routName: (ctx) => OrderScreen(),
                  ProductOverviewScreen.routName: (ctx) => ProductOverviewScreen(),
                  UserProductsScreen.routName: (ctx) => UserProductsScreen(),
                  EditProductScreen.routName: (ctx) => EditProductScreen(),
                },
              ),
            ));
      }
    }