【问题标题】:Unable to navigate to home page in flutter无法在颤动中导航到主页
【发布时间】: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


【解决方案1】:

此时,当您想立即返回主屏幕时,也许外包您的异步更新功能是一个简单的解决方案。你可以直接在函数中打印更新。

保持 onpressed() 不变。

onPressed: () {
  updateNewTask(_taskTextInput.text, _vendorTextInput.text,  _amountTextInput.text, id);
  Navigator.pop(context);
},

【讨论】:

    猜你喜欢
    • 2020-02-08
    • 2021-09-18
    • 1970-01-01
    • 2021-03-24
    • 1970-01-01
    • 2021-08-19
    • 2021-06-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多