从flutter中的共享首选项中读取字符串

时间:2019-05-31 04:13:07

标签: flutter sharedpreferences

我使用共享首选项保存了两个字符串。我想分别检索字符串并将其显示为文本。

写:

_nameSaver() async {
    SharedPreferences prefs = await SharedPreferences.getInstance();
    prefs.setString('name', nameController.text);
    prefs.setString('school', schoolController.text);
  }

RaisedButton(onPressed: () => _nameSaver(),);

阅读:

  _nameRetriever() async {
    SharedPreferences prefs = await SharedPreferences.getInstance();
    final name = prefs.getString('name') ?? '';
    final school = prefs.getString('school') ?? '';

    print(name);
    print(school);
  }

我应该从共享首选项中提取姓名和学校,并将其分别显示在列表图块上。名称标题和学校字幕。但是我不确定如何使用await方法提取它。

ListTile(title: Text("") 
         subtitle: Text(""),),

2 个答案:

答案 0 :(得分:1)

首先为文本定义变量

String nameText = '';
String schoolText = '';

将这些分配给小部件

ListTile(title: Text(nameText) 
         subtitle: Text(schoolText),),

现在可以从sharedpref函数读取这些内容

 _nameRetriever() async {
    SharedPreferences prefs = await SharedPreferences.getInstance();

setState(){
 nameText = prefs.getString('name') ?? '';
 schoolText = prefs.getString('school') ?? '';
}

    print(targetPrice);
    print(instrumentPair);
  }

编辑

这只是为了演示其工作原理。我已经将保存功能设为将来的功能,只是为了确保保存后可以阅读。如果您同时进行保存和阅读,则不需要

class Home extends StatefulWidget {
  @override
  _HomeState createState() => _HomeState();
}

class _HomeState extends State<Home> {
  @override
  void initState() {
    super.initState();
    _nameSaver().then((_) {
      _nameRetriever();
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(body: Container());
  }

  Future<String> _nameSaver() async {
    SharedPreferences prefs = await SharedPreferences.getInstance();
    prefs.setString('name2', 'asdsadasd');
    prefs.setString('school2', 'asdasdas');
    return 'saved';
  }

  _nameRetriever() async {
    SharedPreferences prefs = await SharedPreferences.getInstance();
    final name = prefs.getString('name2') ?? '';
    final school = prefs.getString('school2') ?? '';

    print(name);
    print(school);
  }
}

答案 1 :(得分:0)

可以从首选读取值。为-

getPref('name');

使用此方法-

 getPref(String key) async {
        SharedPreferences prefs = await SharedPreferences.getInstance();
        String auth = prefs.getString(key);
     }

为我工作。