Flutter 如何在Flatter中使用SharedReference保存事件

Flutter 如何在Flatter中使用SharedReference保存事件,flutter,Flutter,您好,我尝试使用此时间线包 在按下按钮后创建时间轴工作正常,但使用SharedReference保存事件并不成功。我想在初始状态恢复时间线的历史记录 TimelineEventDisplay get plainEventDisplay { return TimelineEventDisplay( child: TimelineEventCard( title: Text("just now"), content

您好,我尝试使用此时间线包

在按下按钮后创建时间轴工作正常,但使用SharedReference保存事件并不成功。我想在初始状态恢复时间线的历史记录

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代码,我升级了包需要的东西。