Flutter 颤振:从新屏幕返回数据对象
我想从第二个屏幕返回数据作为对象。在这个示例中,它们只以字符串的形式发送,若我想以json对象的形式返回数据呢。我尝试过: 我用 课程Flutter 颤振:从新屏幕返回数据对象,flutter,dart,Flutter,Dart,我想从第二个屏幕返回数据作为对象。在这个示例中,它们只以字符串的形式发送,若我想以json对象的形式返回数据呢。我尝试过: 我用 课程 class LeaveFilterType { String shortName; String fullName; LeaveFilterType({this.shortName, this.fullName}); factory LeaveFilterType.fromJson(Map<String, dynamic> j
class LeaveFilterType {
String shortName;
String fullName;
LeaveFilterType({this.shortName, this.fullName});
factory LeaveFilterType.fromJson(Map<String, dynamic> json) => _$LeaveFilterTypeFromJson(json);
Map<String, dynamic> toJson() => _$LeaveFilterTypeToJson(this);
}
屏幕2
IconButton(
splashColor: AppColor.white,
icon: Icon(Icons.check),
color: AppColor.white,
onPressed: () async {
print(leaveRequest.toJson());
var filterLeave = FilterLeave(type: leaveRequest, startDate: startDateController.text, endDate :endDateController.text);
Navigator.of(context).pop("${leaveRequest}");
}
),
)
总是出错
[VERBOSE-2:ui_dart_state.cc(157)] Unhandled Exception: FormatException: Unexpected character (at character 1)
Instance of 'LeaveFilterType'
据我所知,您可以从
Navigator.pop(上下文、结果)
在我的一个项目中,我通过一个对话框做了以下工作:
DialogResponseObject returnValue = await showDialog<DialogResponseObject>(
context: context,
builder: (BuildContext context) =>
CustomDialog(),
);
DialogResponseObject returnValue=Wait showDialog(
上下文:上下文,
生成器:(BuildContext上下文)=>
CustomDialog(),
);
在对话框中:
Navigator.pop<DialogResponse>(context,DialogResponseObject(dialogAnswer));
Navigator.pop(上下文,DialogResponseObject(dialogAnswer));
你的案子也应该如此。
实际上,您可以从第一个屏幕输入Navigator.push,不需要序列化
FilterLeave result = await Navigator.push<FilterLeave>(context, MaterialPageRoute(builder: (BuildContext context) => FilterView(leaveRequestTypeList: requestTypeList, requestState: RequestState.Supervisor)));
FilterLeave filterLeave = FilterLeave(type: leaveRequest, startDate: startDateController.text, endDate :endDateController.text);
Navigator.of(context).pop<FilterLeave>(leaveRequest);
filterlave result=await Navigator.push(上下文,MaterialPageRoute(生成器:(BuildContext上下文)=>FilterView(leaveRequestTypeList:requestTypeList,requestState:requestState.Supervisor));
FilterLeave FilterLeave=FilterLeave(类型:leaveRequest,startDate:startDateController.text,endDate:endDateController.text);
Navigator.of(context.pop)(leaveRequest);
“在这个示例中,它们只以字符串的形式发送,如果我想以json对象的形式返回数据该怎么办。”-那么你的意思是pop(leaveRequest)
?为什么要弹出字符串
?我在侧双引号中使用了${…},什么是双引号?它是一个字符串
不是吗?那么,您是否要返回字符串
?我想返回leaveRequest对象请参见上面的第一条注释
FilterLeave result = await Navigator.push<FilterLeave>(context, MaterialPageRoute(builder: (BuildContext context) => FilterView(leaveRequestTypeList: requestTypeList, requestState: RequestState.Supervisor)));
FilterLeave filterLeave = FilterLeave(type: leaveRequest, startDate: startDateController.text, endDate :endDateController.text);
Navigator.of(context).pop<FilterLeave>(leaveRequest);