0

我正在使用 MVVM 架构并为此使用了堆叠依赖项。我想从 View 类调用 ViewModel 类中存在的方法。在这个视图类触发方法是Widget build(BuildContext context)所以我无法获得 ViewModel 类的引用。有什么办法可以做到这一点。

有关更多详细信息,我已为 Stateless Widget 添加了代码:

class ECRView extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    SystemChrome.setEnabledSystemUIOverlays(SystemUiOverlay.values);
    return ViewModelBuilder<ECRViewModel>.reactive(
      onModelReady: (model)  {
        model.init(context);
      },
      builder: (context, model, child) => Container(
        padding: EdgeInsets.all(AppSize.extraSmall),
        child: Column(
          mainAxisSize: MainAxisSize.min,
          children: [
            Container(
              width: screenSize.width,
              height: 1.5,
              color: Colors.black12,
            ),
            SizedBox(
              height: screenSize.height * .02,
            ),
          ],
        ),
      ),
      viewModelBuilder: () => ECRViewModel(),
    );
  }

  //Trigger ECR Model Method
  getTriggered(){

    //From here I want to call
  }
}
4

1 回答 1

0

如果您想在小部件上使用模型,这应该适用于您的情况

class _MyWidget extends ViewModelWidget<NameViewModel> {
  @override
  Widget build(BuildContext context, NameViewModelmodel model) {
   //can call model
     return //some code
  }
}

这不是堆叠架构的最佳选择

class _MyWidget extends StatefulWidget {
  final NameViewModelmodel model;

  const _MyWidget({Key key, this.model}) : super(key: key);

  @override
  __MyWidgetState createState() => __MyWidgetState();
}

class __MyWidgetState extends State<_MyWidget> {
  @override
  Widget build(BuildContext context) {
    return Container();
  }
}
于 2020-12-29T05:03:18.143 回答