在应用程序启动时向 Provider 提供 Flutter SharedPreferences 值

akn*_*knd 6 dart flutter

我试图在应用程序启动时从 sharedpreferences 到 provider 设置一个值。

这是我到目前为止所拥有的,小部件的共享偏好正在工作:https ://gist.github.com/andraskende/a19c806aeef0ce88e9a9cafa49660ab4#file-main-dart-L211-L223

akn*_*knd 9

最后我想通了试错......它可以在构造函数中完成:

class BarcodeProvider with ChangeNotifier {

  BarcodeProvider() {
    setup();
  }

  void setup() async {
    SharedPreferences prefs = await SharedPreferences.getInstance();
    String url = (await prefs.getString('url') ?? '');
    _url = url;
    notifyListeners();
  }
  ......
}
Run Code Online (Sandbox Code Playgroud)


Cop*_*oad 5

// global variable, that can be accessed from anywhere
SharedPreferences sharedPrefs; 

void main() async { // make it async

  WidgetsFlutterBinding.ensureInitialized(); // mandatory when awaiting on main

  sharedPrefs = await SharedPreferences.getInstance(); // get the prefs
  // do whatever you need to do with it

  runApp(MyApp()); // rest of your app code
}
Run Code Online (Sandbox Code Playgroud)