flutter:如何使用共享的首选项持久保存List <num>?

时间:2018-11-24 07:38:12

标签: android dart flutter

如何使用List<num> = [2.5, 5, 7.5, 10]来保存SharedPreferences之类的列表?

编辑:如何将存储的数据以StringList<String>的形式转换为列表?

2 个答案:

答案 0 :(得分:4)

首先,您需要将整数列表转换为字符串列表, 然后将其保存在共享的首选项中。

加载时执行相反的操作。

这是一个完整的示例:

import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart';

void main() {
  runApp(new MaterialApp(
    home: new Scaffold(
      body: new Center(
        child: new RaisedButton(
          onPressed: _save,
          child: new Text('Save my list of int'),
        ),
      ),
    ),
  ));
}

_save() async {

  List<int> myListOfIntegers = [1,2,3,4];
  List<String> myListOfStrings=  myListOfIntegers.map((i)=>i.toString()).toList();

  SharedPreferences prefs = await SharedPreferences.getInstance();
  List<String> myList = (prefs.getStringList('mylist') ?? List<String>()) ;
  List<int> myOriginaList = myList.map((i)=> int.parse(i)).toList();
  print('Your list  $myOriginaList');
  await prefs.setStringList('mylist', myListOfStrings);
}

不要忘记将其添加到您的pup spec.yaml文件中:

shared_preferences: ^0.4.3

答案 1 :(得分:0)

根据文档,无法存储数字列表。但是您可以使用以下方式实现它:

 setStringList(String key, List<String> value) → Future<bool>

将字符串值列表保存到后台的持久存储中。

实施:

Future<bool> setStringList(String key, List<String> value) =>
    _setValue('StringList', key, value);

另一种替代方法是将整个列表存储为字符串。

完整文档可在Flutter packages repository中找到。

希望这对您有帮助