Я делаю приложение, в котором я хочу иметь темную тему для приложения на коммутаторе. Я написал код и работает нормально, но только для одной страницы. Когда я go возвращаюсь и снова открываю эту страницу, отображается «ПЛОХО» ГОСУДАРСТВЕННАЯ ОШИБКА ". когда я искал в stackoverflow, многие из них предложили использовать общие настройки. Но я не могу его реализовать.
CODE
class Settings extends StatelessWidget {
@override
Widget build(BuildContext context) {
// TODO: implement build
return StreamBuilder(
stream: bloc.darkThemeEnabled,
initialData: false,
builder: (context,snapshot) => MaterialApp(
debugShowCheckedModeBanner: false ,
theme: snapshot.data?ThemeData.dark():ThemeData.light(),
home: HomePage(snapshot.data),
),
);
}
}
class HomePage extends StatelessWidget {
final bool darkThemeEnabled;
HomePage(this.darkThemeEnabled);
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Settings'),
),
body: ListView(
children: <Widget>[
ListTile(
title: Text("Dark Theme",style:
TextStyle(
fontSize: 20.0
),),
trailing: Switch(
value: darkThemeEnabled,
onChanged:bloc.changeTheme,
)
)],
),
);
}
}
class Bloc{
final _themecontroller = StreamController<bool>();
get changeTheme => _themecontroller.sink.add;
get darkThemeEnabled => _themecontroller.stream;
}
final bloc = Bloc();