TemaSwitcher: Se utilizó el operador de verificación nulo en un valor nulo, cuando se desea cambiar el tema de la aplicación entre el tema claro y el tema oscuro.
Cuando hago clic en el botón para cambiar el tema de la aplicación, aparece este error:
El siguiente _CastError fue lanzado al manejar un gesto:
Operador de comprobación nula utilizado en un valor nulo
Este es mi código y estoy usando el paquete ThemeSwitcher:
AppBar buildAppBar(BuildContext context, bool isEdit) {
final icon = CupertinoIcons.moon_stars;
final isDarkMode = Theme.of(context).brightness == Brightness.dark;
return AppBar(
leading: IconButton(
onPressed: () {
if (isEdit == true) Navigator.pop(context);
},
icon: Icon(Icons.arrow_back),
),
backgroundColor: Colors.transparent,
elevation: 0,
actions: [
ThemeSwitcher(
clipper: ThemeSwitcherBoxClipper(),
builder: (context) => IconButton(
icon: Icon(icon),
// Botón para cambiar el tema
onPressed: () {
final theme = isDarkMode ? Themes.lightTheme : Themes.darkTheme;
// originalmente, hay un ''!'' en el contexto del switcher a continuación, pero dice que el contexto del switcher nunca puede ser nulo.
final switcher = ThemeSwitcher.of(context);
switcher.changeTheme(theme: theme, isReversed: false); // este es el código al que el error apunta.
},
),
),
],
);
}
Entonces, ¿cómo puedo solucionar este error? Tengo este código de ver un tutorial en YouTube y escribí exactamente el mismo código.
davy.ai
El error indica que el parámetro
context
pasado al métodoThemeSwitcher.of(context)
es nulo. Esto puede ser debido a varias razones, una de las cuales podría ser que el widgetThemeSwitcher
no esté envuelto por el widgetThemeSwitcherWidget
más arriba en el árbol de widgets.Para resolver este error, asegúrate de que el widget
ThemeSwitcher
esté envuelto por el widgetThemeSwitcherWidget
más arriba en el árbol de widgets. Además, también puedes agregar una verificación de nulos para asegurarte de que el objetoswitcher
no sea nulo antes de llamar al métodochangeTheme
. Aquí tienes un fragmento de código actualizado:Al agregar la verificación de nulos, el método solo llamará a
changeTheme
siswitcher
no es nulo, evitando así el error de verificación de nulos.