【问题标题】:Flutter : How to setText from Sharedpreference data?Flutter:如何从 Sharedpreference 数据中设置文本?
【发布时间】:2020-09-25 08:47:58
【问题描述】:

我有一个小问题要问大家,我想将 sharepref 变量中的数据显示到 UI Widget。刚刚学了flutter,还是一头雾水。

这是我用来读取数据的共享首选项。

void loginStatus() async {
    final SharedPreferences prefs = await SharedPreferences.getInstance();
    String user = prefs.getString('username');
    String pasw = prefs.getString('password');
  }

我想在UI小部件Text($user)中设置“用户”,希望你们能给我一些参考或一些代码,谢谢你们的理由,我希望你们在这种情况下一切顺利

【问题讨论】:

    标签: flutter sharedpreferences flutter-layout


    【解决方案1】:

    您可以在类的顶部定义您的 var 以使其在类中可访问

    String user='';
    

    然后在initState()中调用您的 loginStatus

    @override
    void initState() {
      super.initState();
      loginStatus(); 
    }
    

    然后按如下方式附加您的loginstatus

    void loginStatus() async {
      final SharedPreferences prefs = await SharedPreferences.getInstance();
      setState()({
        user = prefs.getString('username');
        pasw = prefs.getString('password');
      }); 
    }
    

    现在您可以在任何地方使用 Text("$user")。

    【讨论】:

    • 这是一个很好的答案,但这里有一件事可能会破坏代码。永远不要在 initState() 中调用 setState()
    【解决方案2】:

    我不确定问题出在哪里,但您需要更好地确定变量的范围。 在方法之外声明String userString pasw。我假设它们是私有字段,因此将它们重命名为 _user_pasw。下划线使它们在 dart 中是私有的。

    然后:

    void loginStatus() async {
        final SharedPreferences prefs = await SharedPreferences.getInstance();
        setState(() => {
           user = prefs.getString('username');
           pasw = prefs.getString('password');
         })
      }
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-13
    • 1970-01-01
    • 2015-04-07
    • 2017-10-03
    • 1970-01-01
    • 2019-05-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多