0

即使在我初始化之后也会出现错误:

后期初始化错误 displayName

这是我设置值的代码:

    var displayName=jsondata["username"];
    SharedPreferences prefs=await SharedPreferences.getInstance();
    prefs.setString('displayName', displayName);

我在这里访问数据:

 late String displayName;

  getData() async {
  SharedPreferences prefs = await SharedPreferences.getInstance();
  displayName=prefs.getString('displayName')?? "0";
  }

  initState() {
   getData();
   super.initState();
   }

我不知道是什么问题?但在其他屏幕上它正在工作。

4

1 回答 1

0

希望它能工作:)
创建一个类用户首选项并初始化共享首选项。

class UserPreferences {
  static SharedPreferences? _preferences;

  static const _keyUsername = 'username';
  static Future init() async => _preferences = await SharedPreferences.getInstance();

  static Future setUsername(String username) async => await _preferences!.setString(_keyUsername, username);
  static String? getUsername() => _preferences!.getString(_keyUsername);
}

然后在你的 main.dart 文件中调用 userPreferences 方法
void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await UserPreferences.init();
  runApp(DanikNews());
}

然后从类 userPreferences 调用 displayname
  @override
  void initState() {
    myCategory = UserPreferences.getUsername() ?? "user name is null";
    super.initState();
  }
于 2021-12-22T05:01:25.597 回答