Gui*_*ira 3 parameters constructor controller flutter mobx
我是一名 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);
}
}
Run Code Online (Sandbox Code Playgroud)
如何将数据源(存储库)作为参数传递给此类?
小智 5
您需要的是声明构造函数 forCreateBillController而不是_CreateBillControllerBase,因为构造函数不会被 Dart 中的子类继承。最简单的方法是在构造函数中将传入的数据源分配给父类中相应的属性,如下面的代码片段所示。您还可以实现 的构造函数_CreateBillControllerBase并调用super(datasource)的CreateBillController构造函数。
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);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2044 次 |
| 最近记录: |