¿Cómo puedo hacer que Get.isDarkMode cambie el ícono?
Puedo cambiar el tema en mi aplicación, pero tengo un problema cuando uso Get.isDarkMode
, no se actualiza cuando intento cambiar el color del texto o cambiar el ícono.
import 'package:flutter/material.dart';
import 'package:get_storage/get_storage.dart';
import 'package:get/get.dart';
class ThemeService {
final _box = GetStorage();
final _key = 'isDarkMode';
ThemeMode get theme => _loadThemeFromBox() ? ThemeMode.dark : ThemeMode.light;
bool _loadThemeFromBox() => _box.read(key) ?? false;
void _saveThemeToBox(bool isDarkMode) => _box.write(key, isDarkMode);
void switchTheme() {
Get.changeThemeMode(_loadThemeFromBox() ? ThemeMode.light : ThemeMode.dark);
_saveThemeToBox(!_loadThemeFromBox());
}
}
IconButton( icon: Icon(Get.isDarkMode ? Icons.dark_mode_outlined : Icons.light_mode_outlined) , onPressed: (){
ThemeService().switchTheme();
},)
davy.ai
El problema con
Get.isDarkMode
no actualiza el color del texto o el icono cuando se cambia el tema puede ser debido al hecho de que solo devuelve un valor booleano que indica si la aplicación está actualmente en modo oscuro o no. No actualiza automáticamente la interfaz de usuario cuando se cambia el tema.Para resolver este problema, puede escuchar los cambios de tema utilizando
Get.themeMode
. Esto notificará a su aplicación cada vez que se cambie el modo de tema y le permitirá actualizar la interfaz de usuario en consecuencia.Aquí hay una versión actualizada del código
IconButton
para cambiar el tema y actualizar la interfaz de usuario con el modo de tema actual:Esto actualizará el icono según el modo de tema actual y la interfaz de usuario se actualizará automáticamente cada vez que se cambie el tema.
También puede utilizar
Obx
para escuchar cambios en el modo de tema, de la siguiente manera:Esto actualizará el icono automáticamente cada vez que se cambie el modo de tema.