Flutter 如何在Flatter中使用SharedReference保存事件
您好,我尝试使用此时间线包 在按下按钮后创建时间轴工作正常,但使用SharedReference保存事件并不成功。我想在初始状态恢复时间线的历史记录Flutter 如何在Flatter中使用SharedReference保存事件,flutter,Flutter,您好,我尝试使用此时间线包 在按下按钮后创建时间轴工作正常,但使用SharedReference保存事件并不成功。我想在初始状态恢复时间线的历史记录 TimelineEventDisplay get plainEventDisplay { return TimelineEventDisplay( child: TimelineEventCard( title: Text("just now"), content
TimelineEventDisplay get plainEventDisplay {
return TimelineEventDisplay(
child: TimelineEventCard(
title: Text("just now"),
content: Text("someone commented on your timeline ${DateTime.now()}"),
),
indicator: TimelineDots.of(context).circleIcon);
}
List<TimelineEventDisplay> events;
Widget _buildTimeline() {
return TimelineTheme(
data: TimelineThemeData(lineColor: Colors.blueAccent),
child: Timeline(
indicatorSize: 56,
events: events,
));
}
void _addEvent() {
setState(() {
events.add(plainEventDisplay);
});
}
@override
void initState() {
events = [
plainEventDisplay,
];
}
TimelineEventDisplay获取plainEventDisplay{
返回TimelineEventDisplay(
孩子:TimelineEventCard(
标题:文本(“刚才”),
内容:Text(“有人对您的时间线${DateTime.now()}发表了评论”),
),
指标:时间点(上下文)。圆圈);
}
列出事件;
小部件_buildTimeline(){
回归时间线(
数据:TimeLineHemeData(lineColor:Colors.blueAccent),
孩子:时间线(
指标化:56,
事件:事件,
));
}
void _addEvent(){
设置状态(){
添加(plainEventDisplay);
});
}
@凌驾
void initState(){
事件=[
plainEventDisplay,
];
}
创建一个SharedPref类,这样您就可以轻松地进行管理
import 'package:shared_preferences/shared_preferences.dart';
import 'dart:convert';
class SharedPref {
read(String key) async {
final prefs = await SharedPreferences.getInstance();
if(prefs.getString(key) == null){
return null;
}
final map = jsonDecode(prefs.getString(key));
return map;
}
save(String key, value) async {
final prefs = await SharedPreferences.getInstance();
prefs.setString(key, jsonEncode(value));
}
remove(String key) async {
final prefs = await SharedPreferences.getInstance();
prefs.remove(key);
}
}
在颤振小部件中,创建initState,如下所示:
SharedPref _prefs = SharedPref();
final events;
@override
void initState() async {
super.initState();
events = await _prefs.read('events');
}
void _addEvent() async {
setState(() {
events.add(plainEventDisplay);
});
await _prefs.save('events', events);
}
谢谢你的例子,但目前还没有工作:(重新加载后没有保存。我在帖子中忘记了InitState代码,我升级了包需要的东西。