【发布时间】:2020-09-20 19:52:15
【问题描述】:
我有一个包含主屏幕和更新屏幕的应用。
我无法从更新屏幕导航回主屏幕。
查看下面的主屏幕代码
// build the list widget
Widget _buildTaskWidget(task) {
return ListTile(
leading: Icon(Icons.assignment),
title: Text(task['name']),
subtitle: Text(task['created_at']),
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => UpdateTask(task: task),
),
);
}
);
}
更新界面见下方代码
@override
Widget build(BuildContext context) {
// final Task task = ModalRoute.of(context).settings.arguments;
return Scaffold(
resizeToAvoidBottomInset: true,
appBar: AppBar(
title: Text('Update Task'),
),
body: ListView(
children: <Widget>[
inputWidget(),
inputWidgetForVendor(),
inputWidgetForAmount(),
Container(
margin: EdgeInsets.fromLTRB(45, 1, 45, 1),
child: RaisedButton(
color: Colors.blueAccent,
child: Text('Update Task', style: TextStyle(color: Colors.white)),
onPressed: () async {
var res = await updateNewTask(_taskTextInput.text, _vendorTextInput.text, _amountTextInput.text, id);
print(res);
Navigator.pop(context);
},
),
)
],
)// This trailing comma makes auto-formatting nicer for build methods.
);
}
如果我删除当前的 onPressed 函数并用下面的这个替换,它可以工作
onPressed: () { Navigator.pop(context); },
我在初始函数中做错了什么? 更新功能成功更新了列表项,但是我无法返回。 请参阅以下错误日志:
E/flutter (27123): [ERROR:flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception: type '_InternalLinkedHashMap<String, dynamic>' is not a subtype of type 'List<dynamic>'
E/flutter (27123): #0 updateNewTask (package:task/repository/services.dart:67:10)
E/flutter (27123): <asynchronous suspension>
请帮忙。
【问题讨论】:
-
您能否也发布您如何从主屏幕进入更新屏幕?因为那也很重要!您是否使用“Navigator.pushReplacement”从主屏幕更新屏幕?
-
您当前的 onPressed 正在调用异步函数?如果您的 res 变量返回任何错误,您是否在调试模式下检查过?在这两种情况下,您的调试控制台会返回什么?
-
@AmitB10,我已添加导航以更新屏幕。
-
该函数成功更新列表项,但我无法返回。请参阅下面的错误日志:E/flutter (27123): [ERROR:flutter/lib/ui/ui_dart_state.cc(157)] 未处理的异常:类型 '_InternalLinkedHashMap
' 不是类型 'List 的子类型>' E/flutter (27123): #0 updateNewTask (package:task/repository/services.dart:67:10) E/flutter (27123): -
@biggest_boy:这不是 Navigator.pop 问题,它对我有用,它肯定只能通过你的方法来解决。
标签: flutter dart flutter-layout flutter-test dart-webui