J'ai besoin d'utiliser la variable datosusuario dans un autre fichier, comment puis-je faire cela?
Mon main.dart est une connexion J'ai besoin d'utiliser la variable de résultat de la requête pour imprimer ce résultat dans mon widget de page d'accueil
Main.dart
return new Scaffold(
appBar: new AppBar(
centerTitle: true,
title: new Image.asset("assets/LOGO.png"),
backgroundColor: Colors.blue,
),
drawer: new Drawer(
child: new ListView(
children: <Widget>[
new UserAccountsDrawerHeader(
accountName: new Text("Eduardo"),
accountEmail: new Text("eduardo.hernandez@Utacapñulco.edu.mx"),
currentAccountPicture: new CircleAvatar(
backgroundColor: Colors.white,
child: new Text("E"),
),),
Je dois utiliser la variable datosusuario dans les informations du tiroir.
Home.dart
class LoginStates extends State<Login>{
@override
Widget build(BuildContext context) {
TextEditingController user=new TextEditingController();
TextEditingController pass=new TextEditingController();
Future<List> _login() async{
final response =await
http.post("https://exclinico.com/admin/FlutterClases/login.php", body: {
"correo": user.text,
"password": pass.text,
});
print(response.body);
var datosusuario = json.decode(response.body);
if (datosusuario.length==0) {
//print("$nombre");
}
else{
//print("$nombre");
}
}
3 Réponses :
Il y a 2 façons, d'abord vous pouvez passer la variable au fichier home.dart en utilisant son constructeur.
Dans votre fichier home.dart ,
var datosusuario; // in top of the main.dart
Dans votre fichier main.dart , utilisez p >
Home(datosusuario)
Deuxième solution: vous pouvez rendre la variable globale dans le fichier main.dart et importer ce fichier dans home.dart code> et utilisez-le, mais assurez-vous qu'il n'est pas nul.
class Home extends StatelessWidget {
final datosusuario;
Home(this.datosusuario);
@override
Widget build(BuildContext context) {
...
}
}
Merveilleux, vous venez de découvrir un problème informatique fondamental: la gestion des états!
Il existe de nombreuses façons de gérer les états dans Flutter et je vous recommande vraiment de consulter le Conférence sur la gestion de l'état Flutter lors de l'E / S Google de cette année , où ils décrivent les avantages et les inconvénients des différentes manières de gérer l'état dans Flutter .
Pour le plaisir, voici une manière de le faire de manière pragmatique:
Vous pouvez simplement ajouter le datosusuario comme paramètre de constructeur à votre widget Home , comme ceci:
Home(datasusuario: datasusuario),
puis passer vers le widget Accueil depuis le widget Connexion :
class Home extends StatelessWidget {
Home({
@required this.datasusuario,
});
final datasusuario;
@override
Widget build() {
// here you can use the datasusuario
}
}
Une autre façon de créer un global que je préfère utiliser est de créer un fournisseur / service pour cela.
Par exemple, disons que vous voulez que votre variable soit importable et disponible dans n'importe quel fichier sans instancier un objet, vous pouvez créer une classe avec une valeur statique comme celle-ci:
Service / Fournisseur
import 'package:my_app_name/path/to/provider.dart' as Globals; Globals.datosusuario;
Utiliser dans un autre fichier strong>
class GlobalData {
static const var datosusuario = datosusuario_value;
}