Flutter 颤振范围模型-通过多个模型

Flutter 颤振范围模型-通过多个模型,flutter,scoped-model,Flutter,Scoped Model,我最近一直在玩作用域模型,想知道是否有更好的方法将多个模型推到树上供孩子们使用 假设我有一个由我需要的所有模型组成的“AppModel” class AppModel extends Model { ModelA a = new ModelA(); ModelB b = new ModelB(); ModelC c = new ModelC(); } 我首先从main将这个模型添加到树中 在PageAB中,我可以通过ScopedModel.of访问相关模型 这是共享多个模型的正确方

我最近一直在玩作用域模型,想知道是否有更好的方法将多个模型推到树上供孩子们使用

假设我有一个由我需要的所有模型组成的“AppModel”

class AppModel extends Model
{
  ModelA a = new ModelA();
  ModelB b = new ModelB();
  ModelC c = new ModelC();
}
我首先从main将这个模型添加到树中

在PageAB中,我可以通过ScopedModel.of访问相关模型


这是共享多个模型的正确方式吗?还是有更优雅的解决方案?

这是一种方法。我使用mixin将不同的beahviours/features编译到AppModel中。每个模型负责应用程序中的一个部分/功能。例如,我有一个UserModel、SettingsModel和ContentModel

它们都是ScopedModel库中模型类的混入

mixin UserModel on Model {
 ...
}
mixin SettingsModel on Model {
 ...
}
mixin ContentModel on Model {
 ...
}
然后我的主要应用程序模型如下所示

class AppModel extends Model with UserModel, SettingsModel, ContentModel {
  ...
}
通过这种方式,我结合了来自不同模型的行为,如果您只想公开一种类型的模型,您可以强制转换它并使用该接口


我现在倾向于这样一种方式,模型文件管理某些特性的所有状态,在这些模型中,我注入服务,这些服务是单例实例,如果需要,它们之间可以共享信息。这些服务执行我的所有实际业务逻辑,连接到API,序列化并编译为我的应用程序的上下文信息。

这是一种方法。我使用mixin将不同的beahviours/features编译到AppModel中。每个模型负责应用程序中的一个部分/功能。例如,我有一个UserModel、SettingsModel和ContentModel

它们都是ScopedModel库中模型类的混入

mixin UserModel on Model {
 ...
}
mixin SettingsModel on Model {
 ...
}
mixin ContentModel on Model {
 ...
}
然后我的主要应用程序模型如下所示

class AppModel extends Model with UserModel, SettingsModel, ContentModel {
  ...
}
通过这种方式,我结合了来自不同模型的行为,如果您只想公开一种类型的模型,您可以强制转换它并使用该接口


我现在倾向于这样一种方式,模型文件管理某些特性的所有状态,在这些模型中,我注入服务,这些服务是单例实例,如果需要,它们之间可以共享信息。这些服务执行我的所有实际业务逻辑,连接到API,序列化并编译为我的应用程序的上下文信息。

谢谢,这看起来是一个有趣的替代方案-我必须对Mixin做一些复习@user6635665不客气:这里有一个链接,链接到这篇文章,帮助我理解它存在的原因以及如何使用它@FilledStack我也遇到了类似的问题-你能和我分享一下你的PageAB代码吗?这样我就可以看看你是如何检索ScopedModel的了?你在PageAB的构造函数中传递ScopedModel了吗?@Matt我在ScopedModel上做了完整的视频。简而言之,我使用get_it在需要的地方注入模型。我今天就去看看,谢谢谢谢你,这看起来是一个有趣的选择-我将不得不做一些刷牙的混音@user6635665不客气:这里有一个链接,链接到这篇文章,帮助我理解它存在的原因以及如何使用它@FilledStack我也遇到了类似的问题-你能和我分享一下你的PageAB代码吗?这样我就可以看看你是如何检索ScopedModel的了?你在PageAB的构造函数中传递ScopedModel了吗?@Matt我在ScopedModel上做了完整的视频。简而言之,我使用get_it在需要的地方注入模型。我今天就去看看,谢谢我已经在这个链接上回答了这个问题,它也可以帮助那些仍然考虑在一个模型中组合多个模型的人。我已经在这个链接上回答了这个问题,它也可以帮助那些仍然考虑在一个模型中组合多个模型的人。
class AppModel extends Model with UserModel, SettingsModel, ContentModel {
  ...
}