Flutter中的MVVM设计模式
我们尝试开发一个Flutter应用程序,并创建一个有状态的小部件作为页面。
我们想要将构建函数与其他状态变量和状态函数分离在2个不同的文件中,构建函数可以访问this
状态类,我们创建一个类:
PageClassState extend State<PageClass>{ string value = 'string value';
}
并将其扩展到可以访问PageClassState
this
我们编写的变量的新类中:
PageClassView extend PageClassState{ @override
Widget Build(){
return(new Text(this.value))
}
}
但是在PageClassState
出现错误时说必须在类中重写build方法。有什么建议可以解决问题并在抖动中实现MVVM设计模式?
回答:
我建议将ViewModel代码移到一个不会扩展的单独的类中State
。保持ViewModel平台独立。您的窗口小部件状态可以具有viewModel的实例并与之交互。
您可以在此处找到更详细的示例
如果子窗口小部件需要访问您的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);
有任何问题请告诉我:)
以上是 Flutter中的MVVM设计模式 的全部内容, 来源链接: utcz.com/qa/435355.html