¿Puedo crear algo similar a Tostadas en Flutter? ¿Solo una pequeña ventana de notificación que no está directamente en la cara del usuario y no bloquea o desvanece la vista detrás de él?
167
Puede acceder al padre ScaffoldState
usandoScaffold.of(context)
Entonces haz algo como
Scaffold.of(context).showSnackBar(SnackBar(
content: Text("Sending Message"),
));
Los Snackbars son el "Brindis" oficial del diseño de materiales. Ver https://material.io/design/components/snackbars.html#usage
Aquí hay un ejemplo completamente funcional:
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: const Home(),
);
}
}
class Home extends StatelessWidget {
const Home({
Key key,
}) : super(key: key);
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('Snack bar'),
),
/// We use [Builder] here to use a [context] that is a descendant of [Scaffold]
/// or else [Scaffold.of] will return null
body: Builder(
builder: (context) => Center(
child: RaisedButton(
child: const Text('Show toast'),
onPressed: () => _showToast(context),
),
),
),
);
}
void _showToast(BuildContext context) {
final scaffold = Scaffold.of(context);
scaffold.showSnackBar(
SnackBar(
content: const Text('Added to favorite'),
action: SnackBarAction(
label: 'UNDO', onPressed: scaffold.hideCurrentSnackBar),
),
);
}
}
showSnackBar()
debe tener unScaffold
padre.Usa este plugin
fuente
Unhandled Exception: MissingPluginException(No implementation found for method showToast on channel PonnamKarthik/fluttertoast)
SnackBar
definitivamente es la clase correcta para usar, como lo señaló Darky.Una cosa difícil
showSnackBar
es llegar alScaffoldState
, si está intentando llamarshowSnackBar
dentro del método de construcción donde construye suScaffold
.Es posible que vea un error como este, que incluye texto que explica cómo resolver el problema.
Puedes pasar un
GlobalKey
a tuScaffold
constructor:O puede usar a
Builder
para crearBuildContext
un hijo del Andamio.Finalmente, puede dividir su widget en varias clases, que es el mejor enfoque a largo plazo.
fuente
I/flutter ( 4965): The following assertion was thrown while handling a gesture: I/flutter ( 4965): type 'LabeledGlobalKey<ScaffoldState>' is not a subtype of type 'BuildContext' of 'context' where I/flutter ( 4965): LabeledGlobalKey is from package:flutter/src/widgets/framework.dart I/flutter ( 4965): ScaffoldState is from package:flutter/src/material/scaffold.dart I/flutter ( 4965): Scaffold is from package:flutter/src/material/scaffold.dart I/flutter ( 4965): BuildContext is from package:flutter/src/widgets/framework.dart
GlobalKey
como argumento dondeBuildContext
se espera a. No puedo ayudarte a depurar esto aún más sin ver más de tu código. Publique la línea de código que arroja la excepción, probablemente simplemente no esté utilizando los argumentos correctos.Builder
opción que diste funciona bien. Me encontré con este problema y esto lo resolvió por mí.final key = new GlobalKey<ScaffoldState>();
fuera de Widget build.para mostrar el mensaje de brindis, puede usar el complemento flutterToast para usar este complemento, debe
fluttertoast: ^3.1.0
$ flutter packages get
import 'package:fluttertoast/fluttertoast.dart';
úsalo así
Para más información revisa esto
fuente
fluttertoast: ^ 3.1.3
fuente
Me gustaría proporcionar una solución alternativa para usar la barra de descarga del paquete. https://github.com/AndreHaueisen/flushbar
Como decía el paquete: use este paquete si necesita más personalización al notificar a su usuario. Para los desarrolladores de Android, está hecho para sustituir tostadas y bares.
Otra sugerencia para usar flushbar ¿Cómo mostrar snackbar después de navigator.pop (contexto) en Flutter?
También puede establecer flushbarPosition en TOP o BOTTOM
fuente
Importar la lib
fluttertoast: 3.1.3
Use como a continuación
);
fuente
En caso de que el paquete Fluttertoast proporcionado hasta ahora no funcione ... Entonces te sugiero que pruebes tostadas .
No tiene lujos ni ceremonia.
Simplemente funciona
Sin embargo, noté un error en el ejemplo dado en su archivo Léame:
Toast.show("Toast plugin app", duration: Toast.LENGTH_SHORT, gravity: Toast.BOTTOM);
Si bien el método requiere un contexto. Así que haz bien en agregar 'contexto' como este:
Toast.show("Toast plugin app", context, duration: Toast.LENGTH_SHORT, gravity: Toast.BOTTOM);
Sin embargo, existe la posibilidad de que esto se haya solucionado para el momento en que lo verificó, ya envié un PR.
fuente
pub.dartlang.org/packages/fluttertoast
complemento. Este es mucho más limpio [conciso] y más fácil de personalizar.Hay tres formas de mostrar tostadas en la aplicación flutter.
Te contaré sobre las tres formas que conozco y elegiré cuál quieres usar. Yo recomendaría el segundo.
1: uso de paquete externo.
Este es el primer método que es la forma más fácil de mostrar tostadas en la aplicación Flutter.
En primer lugar, debe agregar este paquete en pubspec.yaml
luego importe el paquete en el archivo donde desea mostrar tostadas.
y el último paso muestra el brindis.
2: usando la forma oficial.
Este método también es simple pero tienes que lidiar con él. No digo que sea difícil, es simple y limpio. Recomendaría este método.
para este método, todo lo que tiene que hacer para mostrar tostadas es usar el siguiente código.
pero recuerda que tienes que usar el contexto del andamio.
3: uso de la API nativa.
ahora este método ya no tiene sentido cuando ya tiene los dos métodos anteriores. Con este método, tiene que escribir código nativo para Android e iOS y luego convertirlo a un complemento y ya está listo. este método consumirá tu tiempo y tendrás que reinventar la rueda. que ya ha sido inventado.
fuente
Para aquellos que buscan
Toast
lo que puede sobrevivir, la ruta cambia laSnackBar
puede que no sea la mejor opción.Echa un vistazo a su
Overlay
lugar.https://api.flutter.dev/flutter/widgets/Overlay-class.html
fuente
Agregue flutter_just_toast a sus dependencias en Pubspecs.yaml
dependencias:
Siguiente paquete de importación en su clase:
Implementar tostadas con mensaje
fuente
simplemente use SnackBar (contenido: Texto ("hola"),) dentro de cualquier evento como onTap y onPress
Puede leer más sobre Snackbar aquí https://flutter.dev/docs/cookbook/design/snackbars
fuente
Para esto, hay diferentes versiones.
1) En primer lugar, puede usar SnackBar, que es un widget en Flutter.
2) Puede usar bibliotecas como toast, flutter_toast de pub.dev.
3) La tercera versión está creando su widget personalizado. Se puede crear usando el widget Overlay y la animación en Flutter.
Puedes hacer este tutorial para obtener más información al respecto. Aquí hay un enlace
fuente
Para tostadas de gráficos originales de Android puede usar esto: https://pub.dartlang.org/packages/fluttertoast
Funciona bien en Android e iOS. ingrese la descripción de la imagen aquí
fuente
https://pub.dev/packages/toast use esto para brindar esta biblioteca es bastante fácil de usar y funciona perfectamente para iOS y Android,
Sintaxis para show Toast:
fuente
Paso 1:
dependencias:
Paso 2:
Paso 3:
fuente
use esta dependencia:
toast: ^0.1.3
luego importe la dependencia de tostadas en la página:import 'package:toast/toast.dart';
luego en onTap () del widget:Toast.show("Toast plugin app", context,duration: Toast.LENGTH_SHORT, gravity: Toast.BOTTOM);
fuente
puedes usar este paquete: tostadas
agrega esta línea a tus dependencias
luego úsalo así:
fuente
obtener paquete de tostadas de aleteo aquí
Agregue este paquete a las dependencias de su proyecto en pubspec.yaml
Luego, siempre que desee que se muestre el Toast con solo tocar un botón
fuente
No hay widgets para tostadas en flutter, puedes ir a este complemento Usecase:
fuente
Puede usar la biblioteca "fluttertoast". Para hacer esto, agréguelo en el archivo pubspec.yaml como:
Luego importe esa biblioteca en el archivo de dardos que necesita la tostada y escriba su código. Por ejemplo, consulte el siguiente código:
fuente
Importar
cupertino_icons: ^0.1.2
y escribir debajo del códigofuente
Para el mensaje de brindis en flutter, use la biblioteca bot_toast . Esta biblioteca proporciona funciones completas, soporte para mostrar notificaciones, texto, carga, archivos adjuntos, etc. Toast
fuente
Es bastante simple
Solo tenemos que instalar el paquete de tostadas de aleteo. Consulte la siguiente documentación: https://pub.dev/packages/fluttertoast
En la pestaña de instalación obtendrá la dependencia que debe pegar en pubspec.yaml y luego instalar.
Después de esto solo importa el paquete:
import 'paquete: fluttertoast / fluttertoast.dart';
Similar a la línea anterior.
Y luego, al usar la clase FlutterToast, puedes usar tu fluttertoast.
¡Ya terminaste!
fuente
Es bastante fácil mostrar un mensaje de brindis en Flutter.
Scaffold.of(context).showSnackBar(SnackBar( content: Text("Toast Text Here"), ));
fuente
Puedes usar algo como FlutterToast
Importar la lib
Use como a continuación
Eso es..
fuente