我正在尝试建立一个列表,其中每个项目的远端都包含一个图标。但是,当我尝试添加多个项时访问列表时,出现错误消息:Invalid value: Only valid value is 0: 1
这里是代码:
import 'package:flutter/material.dart';
import './images.dart';
class LikedList extends StatefulWidget {
@override
_LikedListState createState() => _LikedListState();
}
class _LikedListState extends State<LikedList> {
static List<bool> _likes = List.filled(ImagesState.likes.length,true);
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Liked List'),
),
body: ListView.separated(
separatorBuilder: (context, index) => Divider(),
itemCount: ImagesState.likes.length,
itemBuilder: (context, index) {
final item = ImagesState.likes[index];
return ListTile(
title: Text(item),
trailing: IconButton(
icon: _likes[index]
? Icon(
Icons.favorite_border,
color: Colors.grey,
)
: Icon(
Icons.favorite,
color: Colors.red,
),
onPressed: () {
setState(() {
print(_likes);
_likes[index] = !_likes[index];
print(_likes);
});
},
),
onLongPress: () {
setState(() {
print(ImagesState.likes[index]);
ImagesState.likes.removeAt(index);
});
},
);
},
),
);
}
}
有人知道为什么会这样吗?类似的建议指向未设置itemCount
,但我正在使用它。
您似乎正在使用以下语句创建固定长度的列表:
static List<bool> _likes = List.filled(ImagesState.likes.length,true);
这将创建一个长度为.likes.length的填充的固定长度列表,其中包含值'true'。您需要在方法调用中添加第三个参数“ true”,以使列表变得可以运行