Dart 在颤振中使用变量作为全局变量
我需要在另一个文件中使用Datosuario变量。如何才能做到这一点 My main.dart是一个登录名,我需要使用query result变量在我的主页小部件中打印该结果 主飞镖Dart 在颤振中使用变量作为全局变量,dart,flutter,Dart,Flutter,我需要在另一个文件中使用Datosuario变量。如何才能做到这一点 My main.dart是一个登录名,我需要使用query result变量在我的主页小部件中打印该结果 主飞镖 class LoginStates extends State<Login>{ @override Widget build(BuildContext context) { TextEditingController user=new TextEditingController(); TextE
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");
}
}
有两种方法,首先可以使用其构造函数将变量传递到
home.dart
文件
在您的home.dart
文件中
class Home extends StatelessWidget {
final datosusuario;
Home(this.datosusuario);
@override
Widget build(BuildContext context) {
...
}
}
在main.dart
文件中,使用
Home(datosusuario)
第二种解决方案:您可以将变量设置为
main.dart
文件的全局变量,并在home.dart
中导入此文件并使用它,但请确保它不为null
var datosusuario; // in top of the main.dart
太好了,你刚刚发现了一个基本的计算机科学问题:状态管理 有很多方法可以在颤振中进行状态管理,我真的建议您查看,其中概述了处理颤振状态的不同方法的优缺点 为了方便起见,这里有一种实用的方法: 您可以将
datosuario
作为构造函数参数添加到Home
小部件中,如下所示:
class Home扩展了无状态小部件{
家({
@需要此文件,请参见,
});
最终数据集;
@凌驾
小部件构建(){
//在这里,您可以使用datasusuario
}
}
然后从登录
小部件将其传递到主页
小部件:
Home(datasusario:datasusario),
创建我更喜欢使用的全局服务的另一种方法是为此创建一个提供者/服务
例如,假设您希望变量可导入且在任何文件中都可用,而无需实例化对象,则可以创建一个具有静态值的类,如下所示:
服务/提供商
class GlobalData {
static const var datosusuario = datosusuario_value;
}
在其他文件中使用
import 'package:my_app_name/path/to/provider.dart' as Globals;
Globals.datosusuario;
import 'package:my_app_name/path/to/provider.dart' as Globals;
Globals.datosusuario;