【发布时间】:2021-03-19 11:59:58
【问题描述】:
我正在尝试将我的数据添加到收藏夹列表中,但我不知道该怎么做它
加载json的代码如下
List mydata = List();
final _savedata = Set<Map>();
Future<void> getjsondata() async {
final String response = await rootBundle.loadString('assets/data.json');
final data = await json.decode(response);
setState(() {
mydata = data["InfoPlate"];
});
}
这个用于将数据添加到收藏列表
void _pushSaved() {
Navigator.of(context).push(
new MaterialPageRoute<void>(
builder: (BuildContext context) {
final Iterable<ListTile> tiles = _savedata.map(
(Myinfo) {
return new ListTile(
title: Text(Myinfo['type']),
);
},
);
final List<Widget> divided = ListTile.divideTiles(
context: context,
tiles: tiles,
).toList();
return new Scaffold(
appBar: new AppBar(
title: const Text('Favorited info Plate '),
),
body: new ListView(children: divided),
);
},
),
);
}
这是卡片中添加按钮的其余代码
Widget _buildDataList() {
return ListView.builder(
itemCount: mydata.length,
padding: const EdgeInsets.all(8.0),
itemBuilder: (context, int index) {
return _buildRowInfo(mydata[index]);
});
}
Widget _buildRowInfo(Map myinfo) {
final bool favourited = _savedata.contains(myinfo);
void _favorscreen() {
setState(() {
if (favourited) {
_savedata.remove(myinfo);
} else {
_savedata.add(myinfo);
}
});
}
return Directionality(
textDirection: TextDirection.rtl,
child: Card(
child: ListTile(
visualDensity: VisualDensity.comfortable,
title: Text(myinfo['type']),
trailing: new IconButton(
icon: Icon(favourited ? Icons.favorite : Icons.favorite_border),
color: favourited ? Colors.red : null,
onPressed: _favorscreen,
),
),
),
);
}
}
【问题讨论】: