微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

单击建议时转发到下一页 示例

如何解决单击建议时转发到下一页 示例

我在我的 Flutter 应用程序中使用了自动完成文本字段。在文本字段中输入文本时,用户会收到建议(通过 JSON)。然后用户应该点击一个建议并且应该被转发到“SecondPage”。同时选中播放器的国家也应该传递给“SecondPage”。

在 itemSubmitted 部分中,我尝试整合我的计划,但它不起作用。 “第二页”没有启动。你能在这里帮忙吗?

这是我的代码

class ScreenDivider(Widget):
    score = NumericProperty(0)
    def __init__(self):
        super(ScreenDivider,self).__init__()  # call super __init__()
        self.score = 12

解决方法

我相信缺少的是 Navigator.push 调用将 push SecondPage 到路由堆栈上。 MaterialPageRoute 不会将自己置于页面/路由堆栈中。

示例

当您关注文本字段并按 Enter 键时,它将导航到 SecondPage,其值为 TextFormField

import 'package:flutter/material.dart';

class NavTextFieldPage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Nav TextField Submit'),),body: NavTextfieldExample(),);
  }
}

class NavTextfieldExample extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Column(
      mainAxisAlignment: MainAxisAlignment.spaceEvenly,children: [
        TextFormField(
          decoration: InputDecoration(
            labelText: 'Navigate to next page',initialValue: 'Japan',onFieldSubmitted: (item) {
            /// Using default Navigator from Scaffold,*push* onto stack SecondPage
            Navigator.of(context).push(
                MaterialPageRoute(
                    builder: (context) => SecondPage(item)));
          },)
      ],);
  }
}

class SecondPage extends StatelessWidget {
  final String country;

  SecondPage(this.country);

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Nav Second Page'),body: Center(
        child: Text('Country: $country'),);
  }
}

上面的关键部分是:

            Navigator.of(context).push(
                MaterialPageRoute(
                    builder: (context) => SecondPage(item)));

它使用 Navigator 对象将路由推送到你的路由堆栈(即页面)上。

,

请尝试以下操作:

  1. 。创建一个 SecondPage.dart
  2. 。放入无状态或有状态的 Widget
  3. 。在你的 materialApp() 中创建一条路线

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。