从 SharedPreferences 中获取价值,无需未来的构建器

Chi*_*iaz 1 sharedpreferences dart flutter

我需要从共享首选项中获取一个存储值并将其放入文本小部件中。如果没有未来的建造者,我该如何做到这一点?

_currPage() async {
  SharedPreferences prefs = await SharedPreferences.getInstance();
  int page = prefs.getInt('currPage') ?? 0;
  return page;
}
Run Code Online (Sandbox Code Playgroud)
class _AllTasksPageState extends State<AllTasksPage> {
  @override
  Widget build(BuildContext context) {
  ...
  Text(_currPage()); //not working
  ...
  }
}
Run Code Online (Sandbox Code Playgroud)

小智 5

仅为共享首选项创建一个辅助类

import 'package:shared_preferences/shared_preferences.dart';

class SPHelper {
  SPHelper._();
  static SPHelper sp = SPHelper._();
  SharedPreferences? prefs;
  Future<void> initSharedPreferences() async {
    prefs = await SharedPreferences.getInstance();
  }

  Future<void> save(String name, String value) async {
    await prefs!.setString(name, value);
  }

  String? get(String key) {
    return prefs!.getString(key);
  }

  Future<bool> delete(String key) async {
    return await prefs!.remove(key);
  }
}
Run Code Online (Sandbox Code Playgroud)

在你的主要功能中添加

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await SPHelper.sp.initSharedPreferences();
  ...
  runApp(MyApp());
  ...
}

Run Code Online (Sandbox Code Playgroud)

然后获取你的数据只需写 SPHelper.sp.get("YOUR_KEY")

并存储您的数据只需写入 SPHelper.sp.save("YOUR_KEY","YOUR_VALUE")

这是使用共享偏好的最佳方式。

我希望这能帮助您解决问题。