flutter 我试图从SharedPreferences方法中获取名称,但当运行代码时,在控制台中显示空值,如何解决?

fumotvh3  于 2023-01-27  发布在  Flutter
关注(0)|答案(1)|浏览(150)

在我的代码中,从firestore数据库中获取用户名,这在UI中显示得很好。我想将该名称传递给共享首选项函数,并存储在那里,在其他页面中也使用该名称。
在我之前的问题中,我已经解决了将名称保存到sharedpreference方法中的问题,但是现在我无法显示名称,它显示为null。

控制台屏幕截图

电码

@override
  void initState() {
    super.initState();
    getData();
    fetchName();
    storeName();
    getStoreName();
  }

  Future getStoreName() async {
    getNameFromSharedPreferences();
    print("name $displayName");
  }

  void storeName() {
    String displayName = '${user?.displayName}';
    saveNameToSharedPreferences(displayName);
  }

共享首选项代码

import 'package:shared_preferences/shared_preferences.dart';

String? _displayName;

String? get displayName => _displayName;

Future saveNameToSharedPreferences(String displayName) async {
  final SharedPreferences sn = await SharedPreferences.getInstance();

  await sn.setString('displayName', displayName);
}

Future getNameFromSharedPreferences() async {
  final SharedPreferences sn = await SharedPreferences.getInstance();

  _displayName = sn.getString('displayName');
}

如何从SharedPreferences方法中获取名称和显示?

enyaitl3

enyaitl31#

您的函数getNameFromSharedPreferences()是一个future,您需要await,然后显示name的值

Future getStoreName() async {
    await getNameFromSharedPreferences(); //👈 add await here
    print("name $displayName");
  }

并通过注销name来确保将其存储在sharedPreference

相关问题