我在列表中有对象,用户可以删除。如果列表为空,我想显示一些文本,但是我尝试使用ListView.builder()
来执行此操作,并且该文本显示了很多次,并且只希望显示一次。列表中有我可以收听的某种属性吗?
答案 0 :(得分:0)
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;
}
}
请查看此示例,我为清单视图制作了一个轻扫关闭示例,如果您删除项目,它将显示文本。
让我知道它是否有效。
谢谢。