我需要使用引數從控制器加載 API 資料,但我不知道如何將 id 從視圖傳遞到控制器,如引數
這是我的對話框視圖:
class ProcessWashingDialog extends BaseWidget<ProcessWashingDialogController> {
final int id; // the id i need to pass
final String title;
final VoidCallback onPressed;
final VoidCallback onBackPressed;
ProcessWashingDialog({
required this.id,
required this.title,
required this.onPressed,
required this.onBackPressed,
}) : super(AppComponent.getInjector().get());
@override
Widget get view => ControlledWidgetBuilder<ProcessWashingDialogController>(
builder: (context, controller) => Container(
width: AppSize.DIMEN_324.h,
height: AppSize.DIMEN_367.h,
padding: EdgeInsets.all(AppSize.DIMEN_36.h),
child: controller.isLoading
? Center(child: CommonLoading())
: Column(...
這是我的對話控制器:
class ProcessWashingDialogController extends BaseController {
ProcessWashingDialogPresenter _presenter;
ProcessWashingDialogController(this._presenter);
late TimerRegister _timerRegister;
TimerRegister get timerRegister => _timerRegister;
@override
void initListeners() {
super.initListeners();
_initObserver();
_getTimeRegister();
}
void _initObserver() {
_presenter.onFailure = (e) {};
_presenter.onFinish = dismissLoading;
_presenter.onSuccess = (data) {
_timerRegister = data ?? timerRegister;
};
}
void _getTimeRegister() {
showLoading();
_presenter.getTimerRegister(
<String, String>{
'Filter[Id]': 104.toString(), // i need to put the variable id here
},
);
}
}
任何人請幫助我。謝謝!
uj5u.com熱心網友回復:
我已經完成了這個問題,我喜歡這樣:
查看對話框:
class ProcessWashingDialog extends BaseWidget<ProcessWashingDialogController> {
final int id;
final String title;
final VoidCallback onPressed;
final VoidCallback onBackPressed;
final ProcessWashingDialogController _controller;
ProcessWashingDialog(
this._controller,
{
required this.id,
required this.title,
required this.onPressed,
required this.onBackPressed,
}) : super(_controller) {
_controller.setArguments(id);
};
控制器對話框:
void setArguments(int id) {
_getTimeRegister(id);
}
uj5u.com熱心網友回復:
方法一:你可以寫一個函式,回傳你需要的值,然后從控制器中取回。
方法 2:您在控制器中創建一個 id 變數,然后直接從該控制器獲取它。
class Controller {
String id;
void getData() {
// call api
id = data;
}
}
看法
Text(controller.id)
方法3:可以用params回呼
Class controller {
Function(int) onSuccess;
void getData() {
// call api
onSuccess(id);
}
}
看法
void onSuccess(int id) {
// handle id
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/408836.html
標籤:
