Flutter 当列表内容更改时重新生成小部件

Flutter 当列表内容更改时重新生成小部件,flutter,dart,Flutter,Dart,我的列表中有用户可以删除的对象。如果列表为空,我希望显示一些文本,但我尝试使用ListView.builder()来执行此操作,它多次显示文本,我希望只显示一次。列表中有什么属性可以听吗?import'package:flatter/material.dart'; import 'package:flutter/material.dart'; main() => runApp(MyApp()); class MyApp extends StatefulWidget { @over

我的列表中有用户可以删除的对象。如果列表为空,我希望显示一些文本,但我尝试使用
ListView.builder()
来执行此操作,它多次显示文本,我希望只显示一次。列表中有什么属性可以听吗?

import'package:flatter/material.dart';
import 'package:flutter/material.dart';


main() => runApp(MyApp());

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  List items =new List();
  bool _isLoading =false;


  @override
  void initState() {
    // TODO: implement initState
    super.initState();
    items = getDummyList();
    setState(() {
      _isLoading=false;
    });
  }

  @override
  Widget build(BuildContext context) {
    return 
    MaterialApp(
      home: Scaffold(
        body: _isLoading
    ?Center(
      child: CircularProgressIndicator())
      :
    items.length==0?Center(child: Text('No items in the list'),):
    Container(
        child: ListView.builder(
      itemCount: items.length,
      itemBuilder: (context, index) {
        return Dismissible(
          key: Key(items[index]),
          onDismissed: (direction) {
            setState(() {
              items.removeAt(index);
            });
          },
          child: Container(
            height: 50.0,
            decoration: BoxDecoration(border: Border.all(width: 1.0)),
            padding: EdgeInsets.all(5.0),
            child: Row(
              children: <Widget>[
                Text(
                  items[index],
                  style: TextStyle(
                    color: Colors.black,
                    fontSize: 20.0,
                  ),
                )
              ],
            ),
          ),
        );
      },
    )),
      ),
    );

  }

   List getDummyList(){
    setState(() {
      _isLoading=true;
    });
   List list =  List.generate(5, (i) {
    return "Item ${i +1 }";
    });
    return list;

  }
}

main()=>runApp(MyApp()); 类MyApp扩展了StatefulWidget{ @凌驾 _MyAppState createState()=>\u MyAppState(); } 类MyAppState扩展了状态{ 列表项=新列表(); bool_isLoading=false; @凌驾 void initState(){ //TODO:实现initState super.initState(); items=getDummyList(); 设置状态(){ _isLoading=false; }); } @凌驾 小部件构建(构建上下文){ 返回 材料聚丙烯( 家:脚手架( 正文:_正在加载 ?中心( 子项:CircularProgressIndicator()) : items.length==0?中心(子项:Text(“列表中没有项目”),: 容器( 子项:ListView.builder( itemCount:items.length, itemBuilder:(上下文,索引){ 可驳回的回报( 键:键(项[索引]), onDismissed:(方向){ 设置状态(){ 项目移除(索引); }); }, 子:容器( 身高:50.0, 装饰:框装饰(边框:border.all(宽度:1.0)), 填充:所有边缘设置(5.0), 孩子:排( 儿童:[ 正文( 项目[索引], 样式:TextStyle( 颜色:颜色,黑色, 字体大小:20.0, ), ) ], ), ), ); }, )), ), ); } 列表getDummyList(){ 设置状态(){ _isLoading=true; }); 列表=列表生成(5,(i){ 返回“Item${i+1}”; }); 退货清单; } }
看看这个例子,我为listview制作了一个Swippe Disclose示例,如果删除这些项目,它将显示文本

让我知道它是否有效


谢谢。

您如何利用
itemCount
属性?