тип ‘_Type’ не является подтипом типа ‘Widget?’

#flutter #dart #flutter-widget

#flutter #dart #flutter-widget

Вопрос:

здесь в моем коде проблема с авторизацией потребителя, я нашел здесь похожий вопрос, но не относящийся к моей ошибке, я пытался найти много способов ее решения, кто-нибудь может помочь, пожалуйста?

 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(),
            },
          ),
        ));
  }
}
 

Комментарии:

1. Я думаю, вы забыли сконструировать ProductOverviewScreen home: ... . Так и должно быть ProductOverviewScreen() .

Ответ №1:

Поверьте, это исправление, просто скопируйте, вставьте и дайте мне знать 🙂

 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(),
            },
          ),
        ));
  }
}
 

Комментарии:

1. да, это исправило проблему, которую я забыл поставить () я понял после того, как опубликовал вопрос 😂😂 большое спасибо за помощь, я ценю это

2. Хахаха классный гомерчик: p рад, что теперь все отсортировано, делай это часто, не буду врать: p