Flutter 颤振:我如何在颤振中使用开关更改主题-我已经使用提供程序实现了这个明暗主题,但不能使用开关更改
我已经使用了改变主题的提供者,这是光明和黑暗主题的代码。我的问题的主要目的是用开关而不是按钮来改变主题。 可以使用int模式通过按钮正确更改主题。 但是当我因为一个开关而使用bool模式时。开关需要一个true或false值 如何实现此切换以更改明暗主题?我需要一个开关,不是按钮Flutter 颤振:我如何在颤振中使用开关更改主题-我已经使用提供程序实现了这个明暗主题,但不能使用开关更改,flutter,flutter-layout,flutter-animation,flutter-provider,flutter-theme,Flutter,Flutter Layout,Flutter Animation,Flutter Provider,Flutter Theme,我已经使用了改变主题的提供者,这是光明和黑暗主题的代码。我的问题的主要目的是用开关而不是按钮来改变主题。 可以使用int模式通过按钮正确更改主题。 但是当我因为一个开关而使用bool模式时。开关需要一个true或false值 如何实现此切换以更改明暗主题?我需要一个开关,不是按钮 import 'package:flutter/material.dart'; class AppStyleModeNotifier extends ChangeNotifier { bool mode = tr
import 'package:flutter/material.dart';
class AppStyleModeNotifier extends ChangeNotifier {
bool mode = true; //0 for light and 1 for dark
Color primaryBackgroundColor = Colors.white;
Color appBarBackgroundColor = Colors.cyan[200];
Color boxColor = Colors.blue[50];
Color boxTextColor = Colors.indigo;
Color primaryTextColor = Colors.white;
Color dashboardColor = Colors.cyan;
Color dashboardTextColor = Colors.red[600];
Color dashboardIconColor = Colors.yellow[200];
//Color typeMessageBoxColor = Colors.grey[200];
switchMode() {
if (mode == true) {
//if it is light mode currently switch to dark
primaryBackgroundColor = Colors.grey[900];
appBarBackgroundColor = Colors.grey[800];
// boxColor = Colors.grey[600];
boxColor = Colors.black;
boxTextColor = Colors.grey[100];
primaryTextColor = Colors.black;
dashboardColor = Colors.grey[900];
dashboardTextColor = Colors.grey[400];
dashboardIconColor = Colors.white;
//typeMessageBoxColor = Colors.grey[800];
mode = false;
} else {
//if it is dark mode currently switch to light
primaryBackgroundColor = Colors.white;
appBarBackgroundColor = Colors.cyan[200];
boxColor = Colors.tealAccent;
boxTextColor = Colors.indigo;
primaryTextColor = Colors.white;
dashboardColor = Colors.cyan;
dashboardTextColor = Colors.red[600];
dashboardIconColor = Colors.yellow[200];
//typeMessageBoxColor = Colors.grey[200];
mode = true;
}
notifyListeners();
}
}
下面是更改“明暗”主题的开关。此开关工作不正常,代码中是否有错误。它不是使用按钮的开关,而是可以正常工作的
import 'package:provider/provider.dart';
import '../FreelanceTheme/AppStyleModeNotifier.dart';
class HomePage extends StatelessWidget with NavigationStates {
const HomePage({Key key, this.onMenuTap}) : super(key: key);
@override
Widget build(BuildContext context) {
final appStyleMode = Provider.of<AppStyleModeNotifier>(context);
return MaterialApp(
home: Scaffold(
backgroundColor: Color(0xffE5E5E5),
appBar: AppBar(
elevation: 0,
backgroundColor: appStyleMode.appBarBackgroundColor,
actions: <Widget>[
Switch(
value: appStyleMode.mode,
onChanged: appStyleMode.switchMode(),
),
把你的代码改成这个,就行了
Switch(
value: appStyleMode.mode,
onChanged: (value)=> appStyleMode.switchMode(),
),
把你的代码改成这个,就行了
Switch(
value: appStyleMode.mode,
onChanged: (value)=> appStyleMode.switchMode(),
),
嗨,Devny,你提供的代码对我有用。这是正确的代码。我弄乱了状态改变的布尔值。所以我非常非常感谢你。你是一个伟大的人。嗨,Devny,你提供的代码为我工作。这是正确的代码。我弄乱了状态改变的布尔值。所以我非常非常感谢你。你是一个伟大的人。