首页 > 解决方案 > 在小部件之间传递数据

问题描述

当按下按钮时,如何从 ChoiceChip 小部件中检索数据并将其传递给另一个小部件。

这是我的选择芯片

class ChoiceChipWidget extends StatefulWidget {
  final List<String> reportList;

  ChoiceChipWidget(this.reportList);

  @override
  _ChoiceChipWidgetState createState() => new _ChoiceChipWidgetState();
}

class _ChoiceChipWidgetState extends State<ChoiceChipWidget> {
  String selectedChoice = "";

  _buildChoiceList() {
    List<Widget> choices = List();
    widget.reportList.forEach((item) {
      choices.add(Container(
        child: ChoiceChip(
          label: Text(item),
          selected: selectedChoice == item,
          onSelected: (selected) {
            setState(() {
              selectedChoice = item;
            });
          },
        ),
      ));
    });
    return choices;
  }

  @override
  Widget build(BuildContext context) {
    return Wrap(
      children: _buildChoiceList(),
    );
  }
}

当按下按钮时,我想在这个小部件中传递它。

class AddCashForm extends StatefulWidget {
  @override
  _AddCashFormState createState() => _AddCashFormState();
}

class _AddCashFormState extends State<AddCashForm> {
  List<String> chipList = [
    "weekly",
    "bi-weekly",
    "monthly",
    "once",
  ];

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: new COHAppBar().getAppBar(),
      body: Column(
        mainAxisAlignment: MainAxisAlignment.center,
        children: <Widget>[
          Row(
            children: <Widget>[
              ChoiceChipWidget(chipList),
            ],
          ),
          RaisedButton(
            child: Text("Update Cash Flow"),
            onPressed: () {
              setState(() {});
            },
          ),

          //Text('${widget.selectedChoice ?? "File is empty"}'), Data goes here
        ],
      ),
    );
  }
}

.....我是否需要添加一个构造函数以便在按下按钮时传递数据?如何在这些小部件之间传递数据

标签: flutterdart

解决方案


您可以在按下事件时在 RaisedButton 中添加以下行:-

final Route route = MaterialPageRoute(builder: (context) => ChoiceChipWidget(true));
Navigator.push(mContext, route);

推荐阅读