Flutter 颤振中的多作用域模型
我遵循了一个使用scope_模型登录系统的颤振应用程序的教程。然后,我添加了一个名为Group的新scope_模型,用于名为opportunities的新路线 但在我的新路线中,我不能调用scope_模型组,我总是看到相同的错误: 错误:找不到正确的ScopedModel 我想我的错误主要是。我不知道如何为我的新scope_模型开票 这是我的密码 文件opportunity.dartFlutter 颤振中的多作用域模型,flutter,Flutter,我遵循了一个使用scope_模型登录系统的颤振应用程序的教程。然后,我添加了一个名为Group的新scope_模型,用于名为opportunities的新路线 但在我的新路线中,我不能调用scope_模型组,我总是看到相同的错误: 错误:找不到正确的ScopedModel 我想我的错误主要是。我不知道如何为我的新scope_模型开票 这是我的密码 文件opportunity.dart import 'package:scoped_model/scoped_model.dart'; import
import 'package:scoped_model/scoped_model.dart';
import 'package:business_maker/data/models/group_api.dart';
文件main.dart
@override
Widget build(BuildContext context) {
return ScopedModel<ThemeModel>(
model: _model,
child: new ScopedModelDescendant<ThemeModel>(
builder: (context, child, theme) => ScopedModel<AuthModel>(
model: _auth,
child: MaterialApp(
theme: theme.theme,
home: new ScopedModelDescendant<AuthModel>(
builder: (context, child, model) {
if (model?.user != null) return Home();
return LoginPage();
}),
routes: <String, WidgetBuilder>{
"/login": (BuildContext context) => LoginPage(),
"/menu": (BuildContext context) => Home(),
"/home": (BuildContext context) => Home(),
"/settings": (BuildContext context) => SettingsPage(),
"/opportunities": (BuildContext context) => OpportunityPage()
},
),
),
));
}
谢谢如果您想在不同路线中使用模型,则需要将模型放置在导航器上方,导航器通常在WidgetsApp/MaterialApp/CupertinoApp中创建 在您的代码中,我没有看到位于导航器上方的ScopedModel。或者任何地方。您需要在materialapp为您创建的导航器上方添加组模型
Widget build(BuildContext context) {
return ScopedModel<ThemeModel>(
model: _model,
child: ScopedModel<Group>(
model: _yourGroupModel,
child: new ScopedModelDescendant<ThemeModel>(
builder: (context, child, theme) => ScopedModel<AuthModel>(
model: _auth,
child: MaterialApp(
theme: theme.theme,
home: new ScopedModelDescendant<AuthModel>(
builder: (context, child, model) {
if (model?.user != null) return Home();
return LoginPage();
}),
routes: <String, WidgetBuilder>{
"/login": (BuildContext context) => LoginPage(),
"/menu": (BuildContext context) => Home(),
"/home": (BuildContext context) => Home(),
"/settings": (BuildContext context) => SettingsPage(),
"/opportunities": (BuildContext context) => OpportunityPage()
},
),
),
)
)
);
}是的,这是我的问题。我不知道在navigator中放置ScopedModel的位置。正如我所说,我遵循了一个教程,现在正在学习。你能帮助我吗?但是你已经在导航器上面创建了范围模型:范围模型:_模型,。。。是你这样做的一个例子。请在此处为组模型放置另一个ScopeModel。感谢您的回复和帮助。它现在正在工作:
Widget build(BuildContext context) {
return ScopedModel<ThemeModel>(
model: _model,
child: ScopedModel<Group>(
model: _yourGroupModel,
child: new ScopedModelDescendant<ThemeModel>(
builder: (context, child, theme) => ScopedModel<AuthModel>(
model: _auth,
child: MaterialApp(
theme: theme.theme,
home: new ScopedModelDescendant<AuthModel>(
builder: (context, child, model) {
if (model?.user != null) return Home();
return LoginPage();
}),
routes: <String, WidgetBuilder>{
"/login": (BuildContext context) => LoginPage(),
"/menu": (BuildContext context) => Home(),
"/home": (BuildContext context) => Home(),
"/settings": (BuildContext context) => SettingsPage(),
"/opportunities": (BuildContext context) => OpportunityPage()
},
),
),
)
)
);