首页 > 解决方案 > 如何在颤动中将列表数据从一个屏幕传递到另一个屏幕(StatefulWidget)

问题描述

我在一个屏幕中有卡片数据,我将卡片文本保存在列表中。所以当我按下(onTap)我的卡片时我需要做文本数据发送到另一个屏幕。在第二个屏幕中,我有一些文本字段和卡片值需要填写此文本字段。

这是我的卡片屏幕:- 在此处输入图像描述

class _LoadDataState extends State<LoadData> {
  String cupcakeName = '';
  String cupcakeDesc = '';
  String cupcakePrice = '';
  String listDocID = '';
  var cakeData = [];
  List<String> strArr = [];
  @override
  Widget build(BuildContext context) {
        return Container(
          child: ListView(
              return Card(
                shape: RoundedRectangleBorder(
                    borderRadius: BorderRadius.circular(12)),
                child: new InkWell(
                  onTap: () { //This is the methord I need to send my data
                    cupcakeName = (data['cupcake_name']);
                    cupcakeDesc = (data['description']);
                    cupcakePrice = (data['price']);
                    strArr = [cupcakeName, cupcakeDesc, cupcakePrice];

                    print(strArr);
                  },
                  child: Container(
                    padding: EdgeInsets.all(16),
                    child: Column(
                      children: <Widget>[
                        Text(
                          data['cupcake_name'],
                          style: TextStyle(
                            fontSize: 20,
                            fontWeight: FontWeight.bold,
                          ),
                        ),
                  }).toList(),
                 ),

这是我的第二个屏幕文本字段:-

在此处输入图像描述

  Widget build(BuildContext context) {
    return Scaffold(
      body: ListView(
        shrinkWrap: true,
        children: <Widget>[
          DropDown(),
          Form(
            key: _cupcakeKey,
            autovalidateMode: AutovalidateMode.always,
            child: Padding(
              padding: const EdgeInsets.all(16.0),
              child: TextFormField(
                decoration: InputDecoration(
                controller: cupCake,
                validator: (_val) {
                  if (_val!.isEmpty) {
                    return "Can't Be Empty";
                  } else {
                    return null;
                  }
                },
                onChanged: (cupcake) {
                  cupcakeName = cupcake;
                },
              ),
            ),
          ),

标签: flutterflutter-test

解决方案


你可以使用 Flutter Navigator 1.0 来实现。尝试将参数传递给第二页 将参数 传递给命名路由


推荐阅读