MultiProvider должен указать дочерний ‘package: provider/src/inherited_provider.dart’: Неудачное утверждение: ‘builder != null || дочерний != null’

#android #flutter #dart

#Android #трепетание #дротик #флаттер #dart

Вопрос:

Главная

     void main() async {
          WidgetsFlutterBinding.ensureInitialized();
          await Firebase.initializeApp();
          runApp(MultiProvider(
            providers: [
              ChangeNotifierProvider.value(value: ProductProvider.initialize()),
            ], child: Builder(builder: _ProductProvider),
          ));
        }
class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  Widget rootPage = Login(); //Pagina de inicio
  Future<Widget> estadoDelUsuario() async =>
      // ignore: await_only_futures
      await FirebaseAuth.instance.currentUser == null ? Login() : Inicio();
  // se pregunta si se esta loggeado y dependiendo de eso se muestra la pagina de inicio correspondiente

  @override
  void initState() {
    //de los primeros metodos que se inician
    // ignore: todo
    // TODO: implement initState
    super.initState();
    estadoDelUsuario().then((Widget page) {
      setState(() {
        rootPage = page; //se muestra la pagina obtenida de la pregunta
      });
    });
  }

  @override
  Widget build(BuildContext context) {
    child:
    MaterialApp(
      theme: ThemeData(primaryColor: Colors.white),
      debugShowCheckedModeBanner: false,
      home: rootPage, //Pagina inicio
      routes: buildAppRoutes(), //Rutas
    );
  }
}
  

Я знаю, что ошибка здесь:

      ChangeNotifierProvider.value(value: ProductProvider.initialize()),
     ], child: Builder(builder: _ProductProvider),
  

Но я не знаю, что я могу туда вставить. Потому что приложение MaterialApp не работает.

Ответ №1:

Существует более одной проблемы. Один из них касается использования MultiProvider . Вам необходимо правильно настроить MultiProvider.

       MultiProvider( //                                     <--- MultiProvider
            providers: [
              ChangeNotifierProvider<MyModel>(create: (context) => MyModel()),
              ChangeNotifierProvider<AnotherModel>(create: (context) => AnotherModel()),
            ],
  

Пожалуйста, прочитайте больше отсюда, и я советую вам внимательно следовать инструкциям.