iOS上的共享偏好设置

3

我想使用共享偏好,但是出现了奇怪的行为。

我正在使用:

shared_preferences: ^0.5.6+2

在一个具有状态的小部件上,在initState中我有这个代码:
@override
  void initState() {
    super.initState();
    _testing()
  }


Future<void> _testing() async{
 print("starting")
 SharedPreferences prefs = await SharedPreferences.getInstance();
 await prefs.setInt('value', 1);
 print("saved?")
}

当我使用flutter run运行代码时,只会打印“starting”,而不是“saved?”。
我在这个项目中使用的完全相同的代码已用于构建Android应用程序,并且正常工作。但对于iOS却不能工作。
我缺少什么?

1
难道你不需要将 _testing 函数标记为 async 吗?(你还应该为其指定返回类型,例如 Future<void>)。我很惊讶它居然编译通过了。 - Richard Heap
你好@RichardHeap,是的,它有异步功能,已经更正了问题。我为函数添加了Future<void>,但仍然只打印“starting”消息。 - Pablo Cardozo
2个回答

0

它可以工作,没有错误。请复制粘贴并再次尝试:

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

void main() {
  runApp(MyApp());
}

class MyApp extends StatefulWidget {
  @override
  State<StatefulWidget> createState() {
    return MyAppState();
  }
}

class MyAppState extends State<MyApp> {

  saveValue() async{
    print("Starting...");
    SharedPreferences prefs = await SharedPreferences.getInstance();
    prefs.setInt('value', 1);
    print("Saved?");
  }


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

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text("Shared Preferences")),
      ),
    );
  }
}

在添加 shared_preferences: ^2.0.6 后,我的代码在 Xcode 中无法工作。请帮忙解决。它在 Android 上可以正常工作。 - Safal Bhatia

0

它不会打印,因为你在设置 int 值之前使用了 await。

await prefs.setInt('value', 1);

如果您删除 await,然后尝试检查打印值,它将正常工作。

请告诉我它是否有效。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接