Navigator.pu sh (): ошибка: не удалось найти правильного поставщика выше этого виджета потребителя - PullRequest
1 голос
/ 03 февраля 2020

Я пытаюсь реализовать базовое c управление состоянием в моем приложении Flutter. Где-то вверх по дереву виджетов у меня есть провайдер для пользователя. Виджеты, расположенные ниже, могут получить доступ к Пользователю с помощью Виджета пользователя-потребителя. Однако один виджет (WidgetB в приведенном ниже коде) создается с использованием Navigator.pu sh () и не может получить доступ к пользователю. Нажатие на кнопку выдаст ошибку:

Ошибка: не удалось найти правильного провайдера над этим виджетом потребителя

floatingActionButton: FloatingActionButton(
          child: Icon(Icons.play),
          onPressed: () {
            Navigator.push(
              context,
              MaterialPageRoute(
                builder: (context) => Consumer<User>(
                  builder: (context, user, child) => WidgetB(user: user),
                ),
              ),
            );
          },
        ),

Как получить доступ к пользователю в WidgetB ( или у какого-нибудь ребенка Widget of WidgetB)?

1 Ответ

4 голосов
/ 04 февраля 2020

Убедитесь, что ваши поставщики настроены на уровне MaterialApp. Например, вот так:

void main() {
  runApp(MultiProvider(
    providers: [
      ChangeNotifierProvider(
        create: (_) => Provider1(),
      ),
      ChangeNotifierProvider(
        create: (_) => Provider2(),
      ),
    ],
    child: MyApp(),
  ));
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: MainPage(),
    );
  }
}
...