Flutter 颤振中的多作用域模型

Flutter 颤振中的多作用域模型,flutter,Flutter,我遵循了一个使用scope_模型登录系统的颤振应用程序的教程。然后,我添加了一个名为Group的新scope_模型,用于名为opportunities的新路线 但在我的新路线中,我不能调用scope_模型组,我总是看到相同的错误: 错误:找不到正确的ScopedModel 我想我的错误主要是。我不知道如何为我的新scope_模型开票 这是我的密码 文件opportunity.dart import 'package:scoped_model/scoped_model.dart'; import

我遵循了一个使用scope_模型登录系统的颤振应用程序的教程。然后,我添加了一个名为Group的新scope_模型,用于名为opportunities的新路线

但在我的新路线中,我不能调用scope_模型组,我总是看到相同的错误:

错误:找不到正确的ScopedModel

我想我的错误主要是。我不知道如何为我的新scope_模型开票

这是我的密码

文件opportunity.dart

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