Android 找不到正确的ScopedModel
我正在我的颤振应用程序中使用Android 找不到正确的ScopedModel,android,dart,flutter,Android,Dart,Flutter,我正在我的颤振应用程序中使用ScopedModel和scopedmodelscedent。MaterialApp是ScopedModelSecondent小部件中的包装器,如下面的代码所示 void main() => runApp(new ScopeModelWrapper()); class ScopeModelWrapper extends StatelessWidget { @override Widget build(BuildContext context) {
ScopedModel
和scopedmodelscedent
。MaterialApp是ScopedModelSecondent小部件中的包装器,如下面的代码所示
void main() => runApp(new ScopeModelWrapper());
class ScopeModelWrapper extends StatelessWidget {
@override
Widget build(BuildContext context) {
return ScopedModel<AppModel>(model: AppModel(), child: MyApp());
}
}
class AppModel extends Model {
// Some code specific to model, actually a lot of code.
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return ScopedModelDescendant<AppModel>(builder: (context, child, model) {
return MaterialApp(
title: 'Flutter Firebase',
localizationsDelegates: [
AppLocalizationsDelegate(),
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
],
supportedLocales: [
Locale("nb", ""),
Locale("en", ""),
],
locale: model.appLocal,
navigatorObservers: <NavigatorObserver>[routeObserver],
theme: new ThemeData(
primarySwatch: Colors.blue,
primaryColor: Colors.blueAccent,
),
home: SelectDenominationPage(),
);
});
}
}
void main()=>runApp(新的ScopeModelWrapper());
类ScopeModelWrapper扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回ScopedModel(model:AppModel(),child:MyApp());
}
}
类AppModel扩展了模型{
//一些特定于模型的代码,实际上是很多代码。
}
类MyApp扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回scopedModelSecondant(生成器:(上下文、子对象、模型){
返回材料PP(
标题:“扑动火场”,
本地化授权:[
AppLocalizationsDelegate(),
GlobalMaterialAllocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
],
支持的区域设置:[
区域设置(“nb”和“),
区域设置(“en”和“),
],
区域设置:model.appLocal,
NavigatorObserver:[routeObserver],
主题:新主题数据(
主样本:颜色。蓝色,
primaryColor:Colors.blueAccent,
),
主页:选择命名页(),
);
});
}
}
当我导航到主页
->设置
(从选择面额页面
)时,会出现此问题。Settings
页面(或小部件)包含一些包装在scopedmodelscedent
小部件中的小部件,这就是导致错误的原因
我不明白为什么它找不到ScopedModel,因为它就在树的根上
非常感谢您的帮助
更新:我将
AppModel
类移动到它自己的文件中,然后我将所有导入内容从'AppModel.dart'
更改为'package:/AppModel.dart'
,它开始工作。我仍然不完全理解这一点。如果我们引用的是同一个文件,那么为什么会在不同的模型中处理它?您能为产生反错误的SelectDenominationPage()
发布一个最小的片段吗?当我通过主页
通过SelectDenominationPage
导航到设置页面时,会出现错误。Settings
页面包含一个scopedmodelscedent
。您的AppModel
类是否在main.dart
中声明?如果是这样,请将其移动到另一个文件中。我这样做了,并修改了导入以使用包:
符号,结果成功了。