【问题标题】:Flutter - allow user enter hashtagsFlutter - 允许用户输入主题标签
【发布时间】:2020-06-14 00:05:40
【问题描述】:

你好 Flutter 新手!我想让我的用户输入一些链接到条目的主题标签,这些标签将进入 Firestore。

对于主题标签,我将其设置为列表,但我不确定如何让用户创建主题标签? 基本上类似于 SO 中的标签字段的东西会问一个问题。 在 Firestore 上,我已将字段设置为接收数据的数组。

我找不到太多关于在颤振上创建主题标签的文档。 任何帮助,将不胜感激!! :) 提前致谢!

【问题讨论】:

    标签: flutter hashtag


    【解决方案1】:

    因为我使用 dartpad 来创建它,所以我使用 ListView 来提供建议。 您可以用您自己的建议视图(如 AutoCompleteTextView 或其他内容)替换...

    List<String> list = ['Java', 'Flutter', 'Kotlin', 'Swift', 'Objective-C'],
          selected = [];
      TextEditingController tc;
    
      @override
      void initState() {
        super.initState();
        tc = TextEditingController();
      }
    
      @override
      Widget build(BuildContext context) {
        return new Scaffold(
          backgroundColor: Colors.white,
          appBar: AppBar(
            title: Text('Search Tags'),
            backgroundColor: Colors.green[800],
          ),
          body: Column(
    //         mainAxisSize:MainAxisSize.min,
              children: [
                Padding(
                  padding: const EdgeInsets.all(8.0),
                  child: TextField(
                      controller: tc,
                      decoration: InputDecoration(
                          border: OutlineInputBorder(),
                          contentPadding: EdgeInsets.fromLTRB(20, 0, 20, 0),
                          prefixIcon: selected.length < 1
                              ? null
                              : Padding(
                                padding: const EdgeInsets.only(left:10, right:10),
                                child: Wrap(
                                    spacing: 5,
                                    runSpacing: 5,
                                    children: selected.map((s) {
                                      return Chip(
                                          backgroundColor: Colors.blue[100],
                                          shape: RoundedRectangleBorder(
                                            borderRadius: BorderRadius.circular(7),
                                          ),
                                          label: Text(s,
                                              style:
                                                  TextStyle(color: Colors.blue[900])),
                                          onDeleted: () {
                                            setState(() {
                                              selected.remove(s);
                                            });
                                          });
                                    }).toList()),
                              ))),
                ),
                SizedBox(height: 20),
                ListView.builder(
                    shrinkWrap: true,
                    itemCount: list.length,
                    itemBuilder: (c, i) {
                      return list[i].toLowerCase().contains(tc.text.toLowerCase())
                          ? ListTile(
                              title: Text(list[i],
                                  style: TextStyle(color: Colors.blue[900])),
                              onTap: () {
                                setState(() {
                                  if (!selected.contains(list[i]))
                                    selected.add(list[i]);
                                });
                              })
                          : null;
                    })
              ]),
        );
      }
    

    【讨论】:

    • 欢迎老兄!如果用户可以选择更多,则将 Wrap 小部件与 TextField 分开!
    • 添加主题标签后如何将文本字段光标移动到下一行
    • 尝试增加文本字段高度并添加文本编辑控制器到文本字段,然后将换行符 (\n) 添加到现有文本(不要删除或分配 \n,只需追加/添加)。跨度>
    猜你喜欢
    • 2019-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-08
    • 2011-04-02
    • 1970-01-01
    相关资源
    最近更新 更多