簡體   English   中英

多供應商顫振

[英]Multiprovider Flutter

嗨,我正在嘗試讓 multiproviders 在我的應用程序中工作,我希望能夠在所有子小部件之間共享一組數據。 在這種情況下,我正在讀取文件系統上的文件以加載一組數據(設置)。

FileService.readSettings

static Future<Settings> readSettings() async
  {
    try {
      final directory = await getApplicationDocumentsDirectory();
      final file = File('${directory.path}/settings.txt');

      String loadedstring = await file.readAsString();
      Settings settings = (jsonDecode(loadedstring) as Settings);


      return settings; 

    } catch (e) {
      print("Couldn't read file");
    }
  }

_getSetting main.dart 文件

Future<Settings> _getSettings(BuildContext context) async
  {
    Settings settings = await FileService.readSettings();

    return settings;

  }

我在 main.dart 中的 Build 方法片段

@override
  Widget build(BuildContext context) {

    return ChangeNotifierProvider(
      create: (context) => UserData(),
      child: MultiProvider(
        providers: [
          ChangeNotifierProvider<Settings>(
            create: (context)  => _getSettings(context)
          ),

        ],

我沒有正確地編寫 create 方法。 我越來越 :

錯誤:無法將“未來”類型的值分配給“設置”類型的變量。

我不確定如何等待它加載。

您可以使用FutureBuilder

  @override
  Widget build(BuildContext context) {
    return FutureBuilder(
      future: _getSettings(context),
      builder: (context, snapshot) {
        return ChangeNotifierProvider(
            create: (context) => UserData(),
            child: MultiProvider(
              providers: [
                ChangeNotifierProvider<Settings>(
                  create: (context)  => snapshot.data
                ),

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM