加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

android – Flutter中的MVVM设计模式

发布时间:2020-12-14 14:48:47 所属栏目:百科 来源:网络整理
导读:我们尝试开发一个颤动的应用程序,我们创建一个状态小部件作为页面. 我们想要在2个不同的文件中将构建函数与其他状态变量和状态函数分开,构建函数可以访问这个状态类 ?我们创建一个类: PageClassState extend StatePageClass{ string value = 'string value'
我们尝试开发一个颤动的应用程序,我们创建一个状态小部件作为页面.
我们想要在2个不同的文件中将构建函数与其他状态变量和状态函数分开,构建函数可以访问这个状态类
?我们创建一个类:

PageClassState extend State<PageClass>{
    string value = 'string value';
}

并在一个可以访问此变量的PageClassState的新类中扩展它
我们写 :

PageClassView extend PageClassState{
    @override
    Widget Build(){
      return(new Text(this.value))
    }
}

但是在PageClassState中我们得到一个错误,说我们必须覆盖类中的构建方法.是否有任何建议来解决问题并在flutter中实现MVVM设计模式?

解决方法

我建议将ViewModel代码移动到一个不扩展State的单独类中.保持ViewModel平台独立.
您的窗口小部件状态可以包含viewModel的实例并与之交互.

你可以找到一个more detailed example here

如果子窗口小部件需要访问您的ViewModel,您可以使用@RémiRousselet建议的继承窗口小部件.
我很快为你实现了这个:

class ViewModelProvider extends InheritedWidget {
  final ViewModel viewModel;

  ViewModelProvider({Key key,@required this.viewModel,Widget child}) 
  : super(key: key,child: child);

  @override
  bool updateShouldNotify(InheritedWidget oldWidget) => true;

  static ViewModel of(BuildContext context) =>
      (context.inheritFromWidgetOfExactType(ViewModelProvider) as 
  ViewModelProvider).viewModel;
}

子窗口小部件可以通过调用来获取ViewModel

var viewModel = ViewModelProvider.of(context);

如果您有任何问题,请告诉我:)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读