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
不包括提供商
你的选择。有几个常见的场景:
- 您在
main.dart
中添加了一个新的提供程序并执行了热重载。
要修复,请执行热重启。
像下面这样声明和实现提供者
@override
Widget build(BuildContext context) {
return MultiProvider(
providers: [
ChangeNotifierProvider(
create: (context) => MenuController(),
),
],
child: MainScreen(),
);
}
抱歉,这是我第一次使用提供商 我不知道如何让按钮带我到另一个页面 我制作了一个带有过滤器的网页 主屏幕
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
不包括提供商
你的选择。有几个常见的场景:
- 您在
main.dart
中添加了一个新的提供程序并执行了热重载。 要修复,请执行热重启。
像下面这样声明和实现提供者
@override
Widget build(BuildContext context) {
return MultiProvider(
providers: [
ChangeNotifierProvider(
create: (context) => MenuController(),
),
],
child: MainScreen(),
);
}