我有这段代码。它包含一个国家/地区列表,每个列表磁贴前面都有一个收藏图标。我希望点击的文本在Favorite_Page中保存/取消保存。我尝试了很多次,但都不能得到我真正想做的事情。如果可能,请解释整个代码。
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text("Favorite Item"),
),
body: FavoriteScreen(),
),
initialRoute: '/',
routes: {
'/': (ctx) => FavoriteItem(),
},
);
}
}
class FavoriteItem extends StatefulWidget {
@override
_FavoriteItemState createState() => _FavoriteItemState();
}
class _FavoriteItemState extends State<FavoriteItem> {
static final List<String> countryList = [
'India',
'America',
'Australia',
'Russia',
'Japan',
'China',
'Nepal',
];
List<bool> _isFavorited = List.filled(countryList.length, false);
@override
Widget build(BuildContext context) {
return Center(
child: ListView.builder(
itemCount: countryList.length,
itemBuilder: (context, index) {
return ListTile(
title: Text(
countryList[index],
),
trailing: IconButton(
onPressed: () =>
setState(() => _isFavorited[index] = !_isFavorited[index]),
icon: _isFavorited[index]
? Icon(Icons.favorite)
: Icon(Icons.favorite_border),
),
);
},
),
);
}
}发布于 2020-04-18 01:45:19
(我是法国人,所以我可能在回答中犯了一些错误:对不起)
这段代码只是初始化了一个国家列表。列表_isFavorited在开始时用false填充。这意味着通过单击一个元素,您只需将_isFavorited中国家所在位置的元素设置为true。我将以国家列表‘日本’,‘美国’,‘法国’,_isFavorited = false,false,false来举例说明。如果我点击美国,_isFavorited将等于false,true,false。您的代码将保存这段代码,而不是您请求的文本。
你可以试试这个:
List <String> _isFavorited=[];
...
setState(){
if (_isFavorited.contains(countryList[index])){
_isFavorited.remove(country[index]);
}else{
_isFavortied.add(country[index]);
}
} 因此,您可能会有一个名为_isFavorited的列表,其中包含您喜欢的国家/地区的名称。您可以在每次点击某个国家/地区时打印此列表,以检查它是否正常工作!这是你要找的东西吗?
我希望它能帮助你!
https://stackoverflow.com/questions/61275550
复制相似问题