Flutter:提供程序错误如何添加新页面

Flutter : Provider error how to add new page

抱歉,这是我第一次使用提供商 我不知道如何让按钮带我到另一个页面 我制作了一个带有过滤器的网页 主屏幕

Scaffold(
  key: context.read<MenuController>().scaffoldKey,
  drawer: DrawerView(),
  body: Row(
      crossAxisAlignment: CrossAxisAlignment.start,
      children: [

        if (Responsive.isDesktop(context))
          Expanded(
            flex: 2,
            // default flex = 1
            // and it takes 1/6 part of the screen
            child: DrawerView(),
          ),
        // We want this side menu only for large screen

        Expanded(
          // It takes 5/6 part of the screen
          flex: 8,
          child: DashboardScreen(),
        ),
      ],
    ),
);

页面分为三部分 提供商部分、仪表板部分和统计部分

菜单控制器

    class MenuController extends ChangeNotifier {
  final GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>();

  GlobalKey<ScaffoldState> get scaffoldKey => _scaffoldKey;

  void controlMenu() {
    if (!_scaffoldKey.currentState!.isDrawerOpen) {
      _scaffoldKey.currentState!.openDrawer();
    }
  }


}

main.dart

home: MultiProvider(
    providers: [
      ChangeNotifierProvider(
        create: (context) => MenuController(),
      ),
    ],
    child: MainScreen(),
  ),

错误:在此 MainScreen 小部件上方找不到正确的提供程序

发生这种情况是因为您使用的 BuildContext 不包括提供商 你的选择。有几个常见的场景:

像下面这样声明和实现提供者

 @override
      Widget build(BuildContext context) {
        return MultiProvider(
          providers: [
            ChangeNotifierProvider(
              create: (context) => MenuController(),
            ),
          ],
          child: MainScreen(),
        );
      }