J'apprends à créer des applications dans Flutter. Maintenant, je suis venu pour alerter les dialogues. Je les ai déjà faites dans Android et iOS , mais comment puis-je faire une alerte dans Flutter?
Voici quelques questions connexes SO:
Je voudrais faire un Q&A canonique plus général, donc ma réponse est ci-dessous.
showAlertDialog(BuildContext context) {
// set up the button
Widget okButton = FlatButton(
child: Text("OK"),
onPressed: () { },
);
// set up the AlertDialog
AlertDialog alert = AlertDialog(
title: Text("My title"),
content: Text("This is my message."),
actions: [
okButton,
],
);
// show the dialog
showDialog(
context: context,
builder: (BuildContext context) {
return alert;
},
);
}
showAlertDialog(BuildContext context) {
// set up the buttons
Widget cancelButton = FlatButton(
child: Text("Cancel"),
onPressed: () {},
);
Widget continueButton = FlatButton(
child: Text("Continue"),
onPressed: () {},
);
// set up the AlertDialog
AlertDialog alert = AlertDialog(
title: Text("AlertDialog"),
content: Text("Would you like to continue learning how to use Flutter alerts?"),
actions: [
cancelButton,
continueButton,
],
);
// show the dialog
showDialog(
context: context,
builder: (BuildContext context) {
return alert;
},
);
}
showAlertDialog(BuildContext context) {
// set up the buttons
Widget remindButton = FlatButton(
child: Text("Remind me later"),
onPressed: () {},
);
Widget cancelButton = FlatButton(
child: Text("Cancel"),
onPressed: () {},
);
Widget launchButton = FlatButton(
child: Text("Launch missile"),
onPressed: () {},
);
// set up the AlertDialog
AlertDialog alert = AlertDialog(
title: Text("Notice"),
content: Text("Launching this missile will destroy the entire universe. Is this what you intended to do?"),
actions: [
remindButton,
cancelButton,
launchButton,
],
);
// show the dialog
showDialog(
context: context,
builder: (BuildContext context) {
return alert;
},
);
}
Le rappel onPressed
pour les boutons dans les exemples ci-dessus était vide, mais vous pouvez ajouter quelque chose comme ceci:
Widget launchButton = FlatButton(
child: Text("Launch missile"),
onPressed: () {
Navigator.of(context).pop(); // dismiss dialog
launchMissile();
},
);
Si vous effectuez le rappel null
, le bouton sera désactivé.
onPressed: null,
Voici le code pour main.Dart
au cas où vous n'obtiendrez pas les fonctions ci-dessus pour qu'elles s'exécutent.
import 'package:flutter/material.Dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter',
home: Scaffold(
appBar: AppBar(
title: Text('Flutter'),
),
body: MyLayout()),
);
}
}
class MyLayout extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Padding(
padding: const EdgeInsets.all(8.0),
child: RaisedButton(
child: Text('Show alert'),
onPressed: () {
showAlertDialog(context);
},
),
);
}
}
// replace this function with the examples above
showAlertDialog(BuildContext context) { ... }
Ou vous pouvez utiliser la bibliothèque RFlutter Alert pour cela. Il est facilement personnalisable et facile à utiliser. Son style par défaut comprend des coins arrondis et vous pouvez ajouter autant de boutons que vous le souhaitez.
Alerte de base:
Alert(context: context, title: "RFLUTTER", desc: "Flutter is awesome.").show();
Alerte avec bouton:
Alert(
context: context,
type: AlertType.error,
title: "RFLUTTER ALERT",
desc: "Flutter is more awesome with RFlutter Alert.",
buttons: [
DialogButton(
child: Text(
"COOL",
style: TextStyle(color: Colors.white, fontSize: 20),
),
onPressed: () => Navigator.pop(context),
width: 120,
)
],
).show();
Vous pouvez également définir styles d'alerte génériques .
* Je suis l'un des développeurs de RFlutter Alert.
Vous pouvez utiliser cet extrait de code pour créer une boîte d'alerte à deux boutons,
import 'package:flutter/material.Dart';
class BaseAlertDialog extends StatelessWidget {
//When creating please recheck 'context' if there is an error!
Color _color = Color.fromARGB(220, 117, 218 ,255);
String _title;
String _content;
String _yes;
String _no;
Function _yesOnPressed;
Function _noOnPressed;
BaseAlertDialog({String title, String content, Function yesOnPressed, Function noOnPressed, String yes = "Yes", String no = "No"}){
this._title = title;
this._content = content;
this._yesOnPressed = yesOnPressed;
this._noOnPressed = noOnPressed;
this._yes = yes;
this._no = no;
}
@override
Widget build(BuildContext context) {
return AlertDialog(
title: new Text(this._title),
content: new Text(this._content),
backgroundColor: this._color,
shape:
RoundedRectangleBorder(borderRadius: new BorderRadius.circular(15)),
actions: <Widget>[
new FlatButton(
child: new Text(this._yes),
textColor: Colors.greenAccent,
onPressed: () {
this._yesOnPressed();
},
),
new FlatButton(
child: Text(this._no),
textColor: Colors.redAccent,
onPressed: () {
this._noOnPressed();
},
),
],
);
}
}
LA SORTIE SERA COMME CELA
Si vous voulez une boîte de dialogue d'alerte belle et réactive, vous pouvez utiliser des packages de flottement comme
alerte rflutter, dialogue fantaisie, alerte riche, dialogues d'alerte douce, dialogue facile et alerte facile
Ces alertes sont attrayantes et réactives. Parmi eux, l'alerte rflutter est la meilleure. actuellement j'utilise l'alerte rflutter pour mes applications.