flutter - 如何将点击列表项添加到 Favorite_Item_Page
问题描述
我有这段代码。它包含一个国家列表,每个列表图块前面都有一个收藏图标。我希望点击的文本在 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),
),
);
},
),
);
}
}
解决方案
(我是法国人,所以我可能在回答中犯了一些错误:对不起)
这段代码只是初始化一个国家列表。该列表_isFavorited
在开头填充了 false 。这意味着通过单击一个元素,您只需将_isFavorited中国家/地区位置的元素设置为true。我将举例说明,国家列表 ['Japan','USA",'France'], _isFavorited = [false,false,false]。如果我点击美国,_isFavorited 将等于 [false,真,假]。您的一段代码正在保存此内容,但没有按照您的要求保存文本..
你可以试试这个:
List <String> _isFavorited=[];
...
setState(){
if (_isFavorited.contains(countryList[index])){
_isFavorited.remove(country[index]);
}else{
_isFavortied.add(country[index]);
}
}
结果,您可能有一个名为 _isFavorited 的列表,其中包含您喜欢的国家/地区名称。每次点击某个国家/地区时,您都可以打印此列表以检查它是否有效!这是你要找的吗?
我希望它可以帮助你!
推荐阅读
- python - conda-installed python3.6 看到 conda-installed scikit-learn 版本错误
- java - 如何避免在这个作业中使用 instanceof?
- html - 防止来自 django tinymce 的危险用户输入
- bash - 从 bash 导出函数并通过命令行运行它
- python - 我在 GitHub 的这个 Python 示例代码中做错了什么?
- c++ - 调用函数时未定义标识符“function_name”
- android - 存储访问框架音频选项卡“媒体是只读的”
- php - 用于以特殊模式添加空格的正则表达式
- javascript - 将 Flow 与 ImmutableJs 记录一起使用 - 缺少“值”的类型注释
- python - WebDriver 位置循环