flutter - 如何使用提供程序获取数据?
问题描述
我正在使用提供者实现登录,但我没有在仪表板页面上获取数据。 模型类
class LoginModel {
Data data;
int status;
String message;
LoginModel({this.data, this.status, this.message});
LoginModel.fromJson(Map<String, dynamic> json) {
data = json['data'] != null ? new Data.fromJson(json['data']) : null;
status = json['status'];
message = json['message'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
if (this.data != null) {
data['data'] = this.data.toJson();
}
data['status'] = this.status;
data['message'] = this.message;
return data;
}
}
class Data {
String customerId;
String customerMobileNo;
String customerToken;
String otp;
Data({this.customerId, this.customerMobileNo, this.customerToken, this.otp});
Data.fromJson(Map<String, dynamic> json) {
customerId = json['customerId'];
customerMobileNo = json['customerMobileNo'];
customerToken = json['customerToken'];
otp = json['otp'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['customerId'] = this.customerId;
data['customerMobileNo'] = this.customerMobileNo;
data['customerToken'] = this.customerToken;
data['otp'] = this.otp;
return data;
}
}
提供者类
class AuthProvider extends ChangeNotifier {
Future<LoginModel> generateOTP(String mobileNumber) async {
var result;
Response response = await post(
AppUrl.login,
body: {
'mobileNo': mobileNumber,
},
);
if(response.statusCode==200) {
final responseData = json.decode(response.body);
var userData = responseData['data'];
print(responseData);
LoginModel authUser = LoginModel.fromJson(userData);
notifyListeners();
}
else {
print("Something went wrong");
}
return result;
}
}
显示页面
class Dashboard extends StatelessWidget {
@override
Widget build(BuildContext context) {
final userTest = Provider.of<AuthProvider>(context);
return Scaffold(
body: Center(
child: ListView(
shrinkWrap: true,
children: [
Text(userTest.authUser.data.customerToken),
],
),
),
);
}
错误
处理手势时引发以下 NoSuchMethodError:getter 'customerToken' 在 null 上被调用。接收方:null 尝试调用:customerToken
如何访问 LoginModel 类的属性。任何人都可以解决我的查询请帮助我,我尝试了很多,但我无法获得价值。
解决方案
LoginModel authUser = LoginModel.fromJson(userData);
您正在将值初始化为方法变量LoginModel authUser
而不是类变量authUser
尝试LoginModel
从“authUser”之前删除。- 在
Dashboard
你还应该检查null
价值,你可以这样做userTest?.authUser?.data?.customerToken ?? ''
推荐阅读
- javascript - 来自两个 li 元素的逗号分隔列表
- javascript - 如何在 Vue.js 的编辑文件输入中赋予文件值?
- python - 正则表达式字符串模式插入操作
- css - 表格 css 在缩小窗口时搞砸了
- c# - 启用 Cors NetCore React 前端
- javascript - Bootstrap modal close modal onclick
- python - 如何在 Jupyter 笔记本中重绘 matplotlib.pyplot 图?
- javascript - 更改选择时组件未呈现
- reactjs - 如何使用 react-select 选择 defaultValue
- next.js - 如何使用 keystonejs 服务下一个 js 应用程序?