Comment pouvons-nous implémenter l'utilisation de onTap ou onPressed dans PopupMenuItem
Voici mon code:
import 'package:bfdi_app/Profile/editProfile.dart'; import 'package:bfdi_app/models/user.dart'; import 'package:bfdi_app/services/collection.dart'; import 'package:bfdi_app/settings.dart'; import 'package:cached_network_image/cached_network_image.dart'; import 'package:flutter/material.dart'; import 'dart:js';
Je veux accéder à SettingPage () en appuyant ou en cliquant sur Paramètres PopupMenuItem.
J'obtiens cette erreur même après avoir suivi une solution mentionnée ci-dessous et même après avoir importé dart: js
Error: Not found: 'dart:js' import 'dart:js';
Voici mes dépendances:
actions: <Widget>[
PopupMenuButton(
icon: Icon(Icons.settings),
itemBuilder: (context) => [
PopupMenuItem(
child: Text("Settings"),
),
PopupMenuItem(
child: Text("Flutter.io"),
),
PopupMenuItem(
child: Text("Google.com"),
),
],
),
]
4 Réponses :
Il existe une propriété appelée onSelected , vous devez l'utiliser, elle gère l'événement onTap .
PopupMenuButton(
icon: Icon(Icons.settings),
onSelected: (newValue) { // add this property
setState(() {
_value = newValue; // it gives the value which is selected
});
},
itemBuilder: (context) => [
PopupMenuItem(
child: Text("Settings"),
value: 0,
),
PopupMenuItem(
child: Text("Flutter.io"),
value: 1,
),
PopupMenuItem(
child: Text("Google.com"),
value: 2,
),
],
)
Bonjour, je souhaite accéder à SettingPage () en appuyant ou en cliquant sur Paramètres PopupMenuItem.
-Édité en fonction des commentaires-
C'est ça :
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
var items = [{'name':'Settings','value':0}, {'name':'Flutter.io','value':1}, {'name':'Google.com',,'value':2}];
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: PopupMenuButton(
onSelected: (x) {
if(x==0){
Navigator.push(
context,
MaterialPageRoute(builder: (context) => SettingPage()), );}
},
icon: Icon(Icons.settings),
itemBuilder: (context) => items
.map<PopupMenuItem>((element) => PopupMenuItem(
child: Text(element['name]),
value: element['value'],
))
.toList()),
));
}
}
Bonjour, je souhaite accéder à SettingPage () en appuyant ou en cliquant sur Paramètres PopupMenuItem.
Je l'ai fait mais il montre: Erreur: Non trouvé: 'dart: js'. J'ai déjà importé dart: js
Ajoutez simplement ceci à votre PopupMenuButton:
PopupMenuItem(
child: Text("Settings"),
value: 0,
),
Et changez votre bouton de réglage pour:
onSelected: (result) {
if (result == 0) {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => SettingPage()),
);
}
},
Je l'ai fait mais il montre: Erreur: Non trouvé: 'dart: js'. J'ai déjà importé dart: js
alors mettez ceci: import 'dart:js'; en haut de votre dossier
Je l'ai déjà fait. J'ai mis à jour la question, veuillez l'examiner.
Ajoutez cette ligne au-dessus de vos autres importations. Sur la première ligne
Sur quelle plateforme construisez-vous le flutter?
Code Visual Studio
Je veux dire plate-forme web ou mobile?
C'est une plateforme mobile avec AVM
Pourriez-vous créer une autre question avec une description détaillée de votre nouveau problème?
Ok, laissez-moi le faire.
Voici le lien: stackoverflow.com/questions/59479813/...
Valeur appelable.
PopupMenuButton(
icon: Icon(Icons.settings),
onSelected: (value) {
value();
},
itemBuilder: (context) => [
PopupMenuItem(
child: Text('Settings'),
value: () {
debugPrint('open Settings');
},
),
PopupMenuItem(
child: Text('Flutter.io'),
value: () {
debugPrint('goto Flutter.io');
},
),
],
)
Vous pouvez envelopper un élément de menu avec le widget InkWell
Merci, mais je veux accéder à SettingPage () en appuyant ou en cliquant sur Paramètres PopupMenuItem.