将计时器字符串保存到共享首选项

Saving a timer string to shared prefs

我目前正在制作一个定时器应用程序,它在点击时启动并停止,并在向上滑动面板中的另一个点击时列出时间。我有一个 class 获取定时器的字符串,如下所示

class Dependencies {
  final Stopwatch stopwatch = new Stopwatch();
  CurrentTime currentTime;
  List<String> savedTime = List<String>();

  transformTimeToString(int milliseconds) {
    currentTime = transformTimeToTime(stopwatch.elapsedMilliseconds);

    int hundreds = (milliseconds / 10).truncate();
    int seconds = (hundreds / 100).truncate();
    int minutes = (seconds / 60).truncate();

    String hundredsStr = (hundreds % 100).toString().padLeft(2, '0');
    String secondsStr = (seconds % 60).toString();
    String secondsMinStr = (seconds % 60).toString().padLeft(2, '0');
    String minutesStr = (minutes % 60).toString();
    if (currentTime.minutes > 0) {
      return '$minutesStr:$secondsMinStr.$hundredsStr';
    } else {
      return '$secondsStr.$hundredsStr';
    }
  }

  transformTimeToTime(int milliseconds) {
    int hundreds = (milliseconds / 10).truncate();
    int seconds = (hundreds / 100).truncate();
    int minutes = (seconds / 60).truncate();

    return CurrentTime(
      hundreds: hundreds % 100,
      seconds: seconds % 60,
      minutes: minutes % 60,
    );
  }
}

所以我无法在 json 文件中列出该字符串,然后将其保存到共享首选项。如果有深刻理解的人可以用代码将我推向正确的方向,那将非常有帮助。谢谢猎人

这是指向所有内容的链接Timer Page,Timer String, Whole project

你的问题有点不清楚,所以我假设你想将 List<String> savedTime; 保存到 SharePreference 中并以某种方式重新加载它。

saveTimeList(String key, List<String> savedTime) async {
  SharedPreferences prefs = await SharedPreferences.getInstance();
  prefs.setStringList(key, savedTime);
}

像这样检索:

Future<Set<String>> loadSavedTime(String key) async {
  SharedPreferences prefs = await SharedPreferences.getInstance();
  List<String> stringValue = prefs.getStringList(key) ?? [];
  #Input your additional code to convert String back to Time if you want
  #
  return stringValue.toSet();
}