【问题标题】:Flutter How to put all the Widgets into a List<Widget>?Flutter 如何将所有 Widget 放入 List<Widget>?
【发布时间】:2021-12-19 06:25:34
【问题描述】:
class _MyHomePageState extends State<MyHomePage> {
  List<int> _counters = [];
  List<Text> t = [];
  void _incrementCounter() {
    setState(() {
      for (var i = 0; i < _counters.length; i++) {
        _counters[i]++;
      }
    });
  }

  @override
  void initState() {
    super.initState();
    for (var i = 0; i < 20; i++) {
      _counters.add(i);
      t.add(Text('${_counters[i]}'));
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: t,
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: _incrementCounter,
        tooltip: 'Increment',
        child: const Icon(Icons.add),
      ),
    );
  }
}

我想隔离小部件List&lt;Widget&gt; t = [];,但它不起作用。因为我想在日期更改时更改 UI 的一部分。它类似于 VUE。有什么建议吗?谢谢!

【问题讨论】:

标签: flutter


【解决方案1】:

您还需要在 setState 中调用 List&lt;Widget&gt; 来重建您的小部件

  int _counter = 2;
  List<Widget> t = [];
  void _incrementCounter() {
    setState(() {
      print("working $_counter");
      _counter++;
      t.add(Text('$_counter'));
    });
  }

【讨论】:

  • 如果 I t.add(Text('$_counter'));,t 小部件将增加。我只想显示一个_counter
  • @Alfred 如果您只想向柜台展示您需要children: t 做什么?
  • 比如我收到数据(100个数字)List _counter = [12,32,43,45,...,100],我要更新100个Text() .我不知道该怎么做。之前,我用的是vue,
  • 之前,我用vue,当我更改数据时,小部件会自动更新。我已经编辑了我的代码。也许它更接近现实。谢谢!
  • @Alfred 所以只将您的数据添加到List&lt;int&gt;(而不是List&lt;Widget&gt;)并基于List&lt;int&gt;Column 方法中构建您的Column 小部件 - 例如:@ 987654329@(或children: _counters.map((cnt) =&gt; Text('$cnt')).toList(),如果你不喜欢...传播运算符)
猜你喜欢
  • 1970-01-01
  • 2020-05-25
  • 2020-04-07
  • 2021-06-04
  • 1970-01-01
  • 2019-05-22
  • 2021-11-09
  • 2021-04-23
  • 2022-08-07
相关资源
最近更新 更多