gpt4 book ai didi

flutter - 如何将参数传递给 Mobx Controller (Flutter)

转载 作者:行者123 更新时间:2023-12-05 02:05:25 25 4
gpt4 key购买 nike

我是一名 Android 开发者,刚接触 Flutter。我真的很喜欢 Mobx 的工作方式,因为它让我想起了 Android 的 ViewModel。顺便说一下,当我创建一个 ViewModel 时,我喜欢将存储库作为参数传递给它,这样我就可以使用不同的数据源(即本地或云)对其进行测试。

所以,现在这是我的课。

import 'package:mobx/mobx.dart';

part 'create_bill_controller.g.dart';

class CreateBillController = _CreateBillControllerBase
with _$CreateBillController;

abstract class _CreateBillControllerBase with Store {
final appBarTitle = 'Criar Conta';
final criarConta = 'Criar conta';
final nomeDaConta = 'Nome da conta';
final seuNome = 'Seu nome';

@action
createBill(String billname, String userName) {
// here, dataSource should be given in a constructor
datasource.createBill(billName, userName);
}
}

如何将数据源(存储库)作为参数传递给此类?

最佳答案

您需要为 CreateBillController 声明构造函数而不是 _CreateBillControllerBase,因为 Dart 中的子类不继承构造函数。最简单的方法是在构造函数中将传入的数据源分配给父类中的相应属性,如下面的代码片段所示。您还可以为 _CreateBillControllerBase 实现构造函数,并在 CreateBillController 的构造函数中调用 super(datasource)

import 'package:mobx/mobx.dart';

part 'create_bill_controller.g.dart';

class CreateBillController extends _CreateBillControllerBase with _$CreateBillController {
// HERE! Implement constructor for CreateBillController
// Do this if you have a constructor for _CreateBillControllerBase
//
// CreateBillController(DataSource datasource) : super(datasource)
//
CreateBillController(DataSource datasource) {
super.datasource = datasource;
}
}

abstract class _CreateBillControllerBase with Store {
final appBarTitle = 'Criar Conta';
final criarConta = 'Criar conta';
final nomeDaConta = 'Nome da conta';
final seuNome = 'Seu nome';
// HERE! Declare datasource
DataSource datasource;

@action
createBill(String billname, String userName) {
datasource.createBill(billName, userName);
}
}

关于flutter - 如何将参数传递给 Mobx Controller (Flutter),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63549686/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com