繁体   English   中英

Flutter 通过 Navigation.push 将 TextField 输入传递给另一个小部件

[英]Flutter pass TextField input to another widget via Navigation.push

我需要在 TextField 中传递任何用户类型,然后在另一个有状态小部件中使用它。 如何在 TextField 的 myController 中传递数据。 我正在使用它根据用户输入搜索 API,并且需要在导航到另一个屏幕时传递此数据

TextField(
controller: myController,
decoration: InputDecoration.collapsed(
hintText: ' Search by Product Name',),
onSubmitted: (value) { Navigator.push(context, MaterialPageRoute(builder: (context)=> ProductBySearch()));},),
class ProductBySearch extends StatefulWidget {
  @override
  _ProductBySearchState createState() => _ProductBySearchState();
}

class _ProductBySearchState extends State<ProductBySearch> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(

      body: FutureBuilder<List<Product>>(
        future: getProductByBanner1(http.Client(), mycontroller),
        builder: (context, snapshot) {
          if (snapshot.hasError) print(snapshot.error);
          if (snapshot.hasData) {
            return ProductByBanner1Grid(
              product: snapshot.data,
            );
          } else {
            return Center(
                child: Column(
                  mainAxisAlignment: MainAxisAlignment.center,
                  crossAxisAlignment: CrossAxisAlignment.center,
                  children: <Widget>[
                    CircularProgressIndicator(),
                    Container(
                      height: 15,
                      width: double.infinity,
                    ),
                    Text('Factory2Homes'),
                  ],
                ));
          }
        },
      ),
    );
  }
}

您可以将数据传递给MaterialPageRoute构建器中内置的Widget的构造器。 该数据是myController.text本身。

class ProductBySearch extends StatefulWidget {
  const ProductBySearch({Key key, @required this.productName}) : super(key: key);

  final String productName;

  // (...)
}

接着

MaterialPageRoute(builder: (context) => ProductBySearch(
  productName: myController.text,
))

我邀请您阅读将数据发送到新屏幕Flutter Cookbook 教程。 它应该很好地向您解释这个概念。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM