找不到正确的ScopedModel

时间:2018-10-03 21:20:30

标签: android dart flutter

我在Flutter应用中使用了ScopedModelScopedModelDescendent。 MaterialApp是ScopedModelDescendent小部件中的包装器,如下面的代码所示。

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(),
      );
    });
  }
}

当我从HomePage导航到Settings-> SelectDenominationPage时,会发生此问题。 Settings页面(或窗口小部件)包含一些包装在ScopedModelDescendent小窗口中的窗口小部件,这就是导致错误的原因。

我不明白为什么它找不到ScopedModel,因为它就在树的根部。

我们非常感谢您的帮助。

更新:我将AppModel类移到了自己的文件,然后将所有导入从'appmodel.dart'更改为'package:<projectname>/appmodel.dart',它开始起作用。我仍然不完全明白这一点。如果我们引用的是同一个文件,那么为什么要以不同的模型来对待它呢?

0 个答案:

没有答案