Flutter中的MVVM设计模式

我们尝试开发一个Flutter应用程序,并创建一个有状态的小部件作为页面。

我们想要将构建函数与其他状态变量和状态函数分离在2个不同的文件中,构建函数可以访问this状态类,我们创建一个类:

PageClassState extend State<PageClass>{

string value = 'string value';

}

并将其扩展到可以访问PageClassStatethis我们编写的变量的新类中:

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

回到顶部