簡體   English   中英

提供了上下文但拋出錯誤找不到正確的提供者<Data>在這個 MyApp Widget Flutter 之上

[英]context provided but throws error Could not find the correct Provider<Data> above this MyApp Widget Flutter

我正在使用提供程序進行狀態管理。 狀態變量適用於其他小部件。 但是當我在 materialApp 中為主題使用狀態變量時,這會引發錯誤(也重新啟動)。 還聲明了樹中的提供者。

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return ChangeNotifierProvider<Data>(
      create: (context) => Data(),
      child: MaterialApp(
        theme: Provider.of<Data>(context).current,
        home: Page1(),
        debugShowCheckedModeBanner: false,
      ),
    );
  }}

數據類:

class Data extends ChangeNotifier {
  String school = "xyz";
  String name = "samuel";
  int age = 123;
  int val = 0;
  String userinput = "";
  ThemeData current = ThemeData.dark();
  void increment() {
    val++;
    notifyListeners();
  }

  void display(String char) {
    userinput = char;
    notifyListeners();
  }
}

實際上,當您使用上下文時,而不是使用this.context 這將采用成員變量上下文而不是上面寫在 creare 參數下的 'context' 行。

void main(){
  runApp(ChangeNotifierProvider<Data>(
      create: (context) => Data(),
      child: MyApp(),
    ),);
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Consumer<Data>(
      builder: (context, appState, child) {
        return MaterialApp(
          theme: Provider.of<Data>(context).current,
          debugShowCheckedModeBanner: false,
          home: Page1(),
        );
      },
    );
  }
}

用消費者包裝您的材料應用程序並嘗試一次此代碼。

暫無
暫無

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

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