Puis-je créer quelque chose de similaire à Toasts dans Flutter? Juste une petite fenêtre de notification qui n'est pas directement face à l'utilisateur et qui ne verrouille pas ou ne décolore pas la vue derrière elle?
169
Vous pouvez accéder au parent en ScaffoldState
utilisantScaffold.of(context)
Puis fais quelque chose comme
Scaffold.of(context).showSnackBar(SnackBar(
content: Text("Sending Message"),
));
Les Snackbars sont le "Toast" officiel de la conception matérielle. Voir https://material.io/design/components/snackbars.html#usage
Voici un exemple pleinement fonctionnel:
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()
doit avoir unScaffold
parent.Utilisez ce plugin
la source
Unhandled Exception: MissingPluginException(No implementation found for method showToast on channel PonnamKarthik/fluttertoast)
SnackBar
est définitivement la bonne classe à utiliser, comme l'a souligné Darky.Une chose délicate
showSnackBar
est d'accéder auScaffoldState
, si vous essayez d'appelershowSnackBar
dans la méthode de construction où vous construisez votreScaffold
.Vous pouvez voir une erreur comme celle-ci, qui comprend du texte expliquant comment résoudre le problème.
Vous pouvez soit passer a
GlobalKey
à votreScaffold
constructeur:Ou vous pouvez utiliser a
Builder
pour créer unBuildContext
qui est un enfant de l'échafaudage.Enfin, vous pouvez diviser votre widget en plusieurs classes, ce qui est la meilleure approche à long terme.
la source
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
comme argument où aBuildContext
est attendu. Je ne peux pas vous aider à déboguer cela davantage sans voir plus de votre code. Veuillez publier la ligne de code qui lève l'exception, vous n'utilisez probablement pas les bons arguments.Builder
option que vous avez donnée fonctionne bien. Ran dans ce problème et cela l'a résolu pour moi.final key = new GlobalKey<ScaffoldState>();
dehors de la construction du widget l'a corrigée.pour afficher le message toast, vous pouvez utiliser le plugin flutterToast pour utiliser ce plugin, vous devez
fluttertoast: ^3.1.0
$ flutter packages get
import 'package:fluttertoast/fluttertoast.dart';
utilise-le comme ça
Pour plus d'informations, vérifiez ceci
la source
fluttertoast: ^ 3.1.3
la source
Je voudrais fournir une solution alternative pour utiliser le package flushbar. https://github.com/AndreHaueisen/flushbar
Comme le dit le package: utilisez ce package si vous avez besoin de plus de personnalisation lors de la notification de votre utilisateur. Pour les développeurs Android, il est fait pour remplacer les toasts et les snackbars.
Une autre suggestion pour utiliser flushbar Comment afficher le snack après navigator.pop (context) dans Flutter?
Vous pouvez également définir flushbarPosition sur TOP ou BOTTOM
la source
Importer la bibliothèque
fluttertoast: 3.1.3
Utilisez comme ci-dessous
);
la source
Au cas où le paquet Fluttertoast donné jusqu'à présent ne fonctionne pas ... Alors je vous suggère d'essayer toast .
Il n'a ni fioritures ni cérémonie.
Cela fonctionne juste.
J'ai remarqué un bogue dans l'exemple donné dans son Readme:
Toast.show("Toast plugin app", duration: Toast.LENGTH_SHORT, gravity: Toast.BOTTOM);
Alors que la méthode nécessite un contexte. Alors faites bien d'ajouter un 'contexte' comme ceci:
Toast.show("Toast plugin app", context, duration: Toast.LENGTH_SHORT, gravity: Toast.BOTTOM);
Il y a une chance que cela ait été résolu au moment où vous avez vérifié, j'ai déjà soumis un PR.
la source
pub.dartlang.org/packages/fluttertoast
plugin. Celui-ci est beaucoup plus propre [concis] et plus facile à personnaliser.Il existe trois façons d'afficher des toasts sur l'application Flutter.
Je vais vous parler des trois moyens que je connais et choisir celui que vous souhaitez utiliser. Je recommanderais le deuxième.
1: utilisation d'un package externe.
c'est la première méthode qui est la façon la plus simple d'afficher des toasts sur l'application Flutter.
tout d'abord, vous devez ajouter ce package dans pubspec.yaml
puis importez le package dans le fichier où vous souhaitez afficher le pain grillé.
et la dernière étape montre le toast.
2: en utilisant la manière officielle.
cette méthode est également simple mais vous devez y faire face. Je ne dis pas que c'est difficile c'est simple et propre, je recommanderais cette méthode.
pour cette méthode, tout ce que vous avez à faire, show toast, est d'utiliser le code ci-dessous.
mais rappelez-vous que vous devez utiliser le contexte d'échafaudage.
3: utilisation de l'API native.
maintenant, cette méthode n'a plus de sens lorsque vous avez déjà les deux méthodes ci-dessus. en utilisant cette méthode, vous devez écrire du code natif pour Android et iOS, puis le convertir en plugin et vous êtes prêt à partir. cette méthode consommera votre temps et vous devrez réinventer la roue. qui a déjà été inventé.
la source
Pour ceux qui recherchent
Toast
ce qui peut survivre, l'itinéraire change,SnackBar
ce n'est peut-être pas la meilleure option.Jetez un œil à la
Overlay
place.https://api.flutter.dev/flutter/widgets/Overlay-class.html
la source
Ajoutez flutter_just_toast à vos dépendances dans votre Pubspecs.yaml
dépendances:
Prochain package d'importation dans votre classe:
Mettre en œuvre Toast avec message
la source
utilisez simplement SnackBar (content: Text ("bonjour"),) dans n'importe quel événement comme onTap et onPress
vous pouvez en savoir plus sur Snackbar ici https://flutter.dev/docs/cookbook/design/snackbars
la source
Pour cela, il existe différentes versions.
1) Tout d'abord, vous pouvez utiliser SnackBar qui est un widget dans Flutter.
2) Vous pouvez utiliser des bibliothèques comme toast, flutter_toast de pub.dev.
3) La troisième version crée votre widget personnalisé. Il peut être créé à l'aide du widget Overlay et de l'animation dans Flutter.
Vous pouvez suivre ce didacticiel pour en savoir plus. Voici un lien
la source
Pour les toasts graphiques originaux Android, vous pouvez utiliser ceci: https://pub.dartlang.org/packages/fluttertoast
Fonctionne très bien sur Android et iOS. entrez la description de l'image ici
la source
https://pub.dev/packages/toast utilisez ceci pour toast cette bibliothèque est assez facile à utiliser et fonctionne parfaitement pour iOS et Android,
Syntaxe de show Toast:
la source
Étape 1:
dépendances:
Étape 2:
Étape 3:
la source
utilisez cette dépendance:
toast: ^0.1.3
puis importez la dépendance de toast dans la page:import 'package:toast/toast.dart';
puis sur onTap () du widget:Toast.show("Toast plugin app", context,duration: Toast.LENGTH_SHORT, gravity: Toast.BOTTOM);
la source
vous pouvez utiliser ce package: toast
ajoutez cette ligne à vos dépendances
puis utilisez-le comme ceci:
la source
obtenir le paquet de toast flottant ici
Ajoutez ce package à vos dépendances de projet dans pubspec.yaml
Ensuite, chaque fois que vous souhaitez que le toast soit affiché comme si vous appuyez sur un bouton
la source
Il n'y a pas de widget pour toast en flutter, vous pouvez accéder à ce plugin Usecase:
la source
Vous pouvez utiliser la bibliothèque "fluttertoast". Pour ce faire, ajoutez-le dans le fichier pubspec.yaml comme:
Ensuite, importez cette bibliothèque dans le fichier de fléchettes, vous avez besoin du pain grillé et écrivez votre code. Par exemple, reportez-vous au code suivant:
la source
Importez
cupertino_icons: ^0.1.2
et écrivez ci-dessous le codela source
Pour le message toast dans Flutter, utilisez la bibliothèque bot_toast . Cette bibliothèque fournit une prise en charge riche en fonctionnalités pour l'affichage des notifications, du texte, du chargement, des pièces jointes, etc. Toast
la source
C'est assez simple,
Nous devons juste installer le paquet Flutter toast. Reportez-vous à la documentation suivante: https://pub.dev/packages/fluttertoast
Dans l'onglet d'installation, vous obtiendrez la dépendance que vous devez coller dans le pubspec.yaml et ensuite installer.
Après cela, importez simplement le package:
import 'package: fluttertoast / fluttertoast.dart';
Similaire à la ligne ci-dessus.
Et puis en utilisant la classe FlutterToast, vous pouvez utiliser votre fluttertoast.
Vous avez terminé!!!
la source
Il est assez facile d'afficher un message Toast dans Flutter.
Scaffold.of(context).showSnackBar(SnackBar( content: Text("Toast Text Here"), ));
la source
Vous pouvez utiliser quelque chose comme FlutterToast
Importer la bibliothèque
Utilisez comme ci-dessous
C'est tout..
la source