Error: Valor constante no válido al establecer una clave global para scaffoldMessengerKey.
Quería usar Snackbar sin Scaffold. Encontré muchas preguntas similares que hacían lo mismo, pero por alguna razón no me funciona.
Future<void> main() async {
await dotenv.load(fileName: '.env');
runApp(const HomeScreens());
}
class HomeScreens extends StatefulWidget {
const HomeScreens({Key? key}) : super(key: key);
@override
_HomeScreensState createState() => _HomeScreensState();
}
class _HomeScreensState extends State<HomeScreens> {
late final GlobalKey<ScaffoldMessengerState>? scaffoldMessengerKey;
@override
Widget build(BuildContext context) {
return ChangeNotifierProvider(
create:(BuildContext context) => MyCurrentTrack(),
child: const MaterialApp(
scaffoldMessengerKey: scaffoldMessengerKey, // <= this
home: LoginScreen(),
debugShowCheckedModeBanner: false,
),
);
}
}
y también intenté esto, pero siempre obtengo el mismo error:
class _HomeScreensState extends State<HomeScreens> {
final GlobalKey<ScaffoldMessengerState> rootScaffoldMessengerKey = GlobalKey<ScaffoldMessengerState>();
@override
Widget build(BuildContext context) {
return ChangeNotifierProvider(
create:(BuildContext context) => MyCurrentTrack(),
child: const MaterialApp(
scaffoldMessengerKey: rootScaffoldMessengerKey, // <= this
home: LoginScreen(),
debugShowCheckedModeBanner: false,
),
);
}
}
davy.ai
Parece que estás tratando de usar un
SnackBar
sin usar unScaffold
. Sin embargo, ambos enfoques que has intentado involucran establecer la propiedadscaffoldMessengerKey
de unMaterialApp
como unaGlobalKey<scaffoldmessengerstate>
. Esto implica que aún estás usando unScaffold
en algún lugar de tu aplicación.Si deseas usar un
SnackBar
sin unScaffold
, puedes utilizar un widgetBuilder
para proporcionar unBuildContext
que tenga acceso a un objetoScaffold
. Aquí tienes un ejemplo:En este ejemplo, utilizamos el método
ScaffoldMessenger.of(context)
para obtener un objetoScaffoldMessengerState
delBuildContext
proporcionado. Luego podemos llamar al métodoshowSnackBar
en este objeto para mostrar unSnackBar
. ElBuildContext
debe ser proporcionado por un widget que sea un ancestro deMyWidget
y que utilice unScaffold
.Espero que esto te ayude. Hazme saber si tienes alguna pregunta adicional.