首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用onPress检索数据

使用onPress检索数据
EN

Stack Overflow用户
提问于 2019-10-14 22:44:27
回答 2查看 583关注 0票数 1

当我试图使用文本小部件呈现item时,我收到了一个错误,说明它是未定义的。

当按下按钮时,如何检索值并将其放入小部件中?

代码语言:javascript
复制
class AddCashForm extends StatefulWidget {
  @override
  _AddCashFormState createState() => _AddCashFormState();
}

class _AddCashFormState extends State<AddCashForm> {
  DateTime selectedDate = DateTime.now();
  List<String> chipList = [
    "one",
    "two",
    "three",
    "four",
  ];

  void dispose() {
    oneController.dispose();
    twoController.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Column(
        mainAxisAlignment: MainAxisAlignment.center,
        children: <Widget>[
          Row(
            children: <Widget>[
              ChoiceChipWidget(chipList, (item) {
                print('Item selected: $item');
                return (item);
              }),
            ],
          ),
          RaisedButton(
            child: Text("Submit"),
            onPressed: () {

            },
          ),
         // Text(item), data should appear here
        ],
      ),
    );
  }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-10-15 00:19:20

您可以创建一个字段selectedItem,在选择项时对其进行更新。在onPressed方法中更新状态。就像这样:

代码语言:javascript
复制
class AddCashForm extends StatefulWidget {
  @override
  _AddCashFormState createState() => _AddCashFormState();
}

class _AddCashFormState extends State<AddCashForm> {
  DateTime selectedDate = DateTime.now();
  String selectedItem;
  List<String> chipList = [
    "one",
    "two",
    "three",
    "four",
  ];

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Column(
        mainAxisAlignment: MainAxisAlignment.center,
        children: <Widget>[
          Row(
            children: <Widget>[
              ChoiceChipWidget(chipList, (item) {
                print('Item selected: $item');
                selectedItem = item;
                return (item);
              })
            ],
          ),
          RaisedButton(
            child: Text("Submit"),
            onPressed: () {
              setState(() {});
            },
          ),
          // Text(item), data should appear here
        ],
      ),
    );
  }
}
票数 0
EN

Stack Overflow用户

发布于 2019-10-15 00:36:39

如果希望项目自动更新,而不单击“提交”,请使用以下命令:

代码语言:javascript
复制
class _AddCashFormState extends State<AddCashForm> {
  final selectedDate = DateTime.now();
  final chipList = <String>[
    'one',
    'two',
    'three',
    'four',
  ];

  String item;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Column(
        mainAxisAlignment: MainAxisAlignment.center,
        children: <Widget>[
          Row(
            children: chipList
                .map<Widget>((s) => ChoiceChip(
                      label: Text(s),
                      selected: s == item,
                      onSelected: (bool selected) {
                        setState(() {
                          item = selected ? s : null;
                        });
                      },
                    ))
                .toList(),
          ),
          Text(item ?? ''),
        ],
      ),
    );
  }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58384925

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档