Tim*_*k10 4 android-contentprovider dart flutter
我收到以下错误 -
I/flutter (18695):以下 StackOverflowError 被抛出构建消费者(脏,依赖:
I/flutter (18695): [_DefaultInheritedProviderScope]):
I/flutter (18695): 堆栈溢出
这似乎与我的消费者中的错误有关。我正在使用 Provider 插件尝试为 Flutter 中的暗模式创建一个切换按钮。
请参阅下面的我的文件 -
appstatenotifier.dart
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:shared_preferences/shared_preferences.dart';
ThemeData light = ThemeData(
brightness: Brightness.light,
primarySwatch: Colors.indigo,
accentColor: Colors.pink,
scaffoldBackgroundColor: Color(0xfff1f1f1)
);
ThemeData dark = ThemeData(
brightness: Brightness.dark,
primarySwatch: Colors.indigo,
accentColor: Colors.pink,
);
class ThemeNotifier with ChangeNotifier {
final String key = "theme";
SharedPreferences prefs;
bool _darkTheme;
bool get darkTheme => darkTheme;
ThemeNotifier() {
_darkTheme = false;
}
toggleTheme() {
_darkTheme = !_darkTheme;
notifyListeners();
}
}
Run Code Online (Sandbox Code Playgroud)
下面是我的 main.dart 相关小部件
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:shared_preferences/shared_preferences.dart';
ThemeData light = ThemeData(
brightness: Brightness.light,
primarySwatch: Colors.indigo,
accentColor: Colors.pink,
scaffoldBackgroundColor: Color(0xfff1f1f1)
);
ThemeData dark = ThemeData(
brightness: Brightness.dark,
primarySwatch: Colors.indigo,
accentColor: Colors.pink,
);
class ThemeNotifier with ChangeNotifier {
final String key = "theme";
SharedPreferences prefs;
bool _darkTheme;
bool get darkTheme => darkTheme;
ThemeNotifier() {
_darkTheme = false;
}
toggleTheme() {
_darkTheme = !_darkTheme;
notifyListeners();
}
}
Run Code Online (Sandbox Code Playgroud)
知道为什么会抛出这个错误吗?
Abi*_*n47 13
正如 Viren V Varasadiya 指出的,你的 getterdarkTheme是不正确的:
bool get darkTheme => darkTheme;
Run Code Online (Sandbox Code Playgroud)
据推测,您打算将其指向_darkTheme,但您拥有的是返回自身的吸气剂。这意味着任何时候调用时darkTheme,getter 都会查找 的值darkTheme,这使 getter 查找 的值darkTheme,这使 getter 查找 的值darkTheme,这使 getter 查找 的值darkTheme,从而使 getter查找...(希望你明白)。
您只需要更改 getter 即可返回正确的内容:
bool get darkTheme => _darkTheme;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2785 次 |
| 最近记录: |