flutter - 通话后不保存数据颤动
问题描述
我打了一个电话,我检查它是否正确发生,但是当我尝试从 null 检索呼叫我收到的数据时。我不明白为什么,但是.. quancuno 你可以帮帮我吗?
Future<UserDataByCode> sendCode() async {
var url = "$_baseUrl/api/users/ABC124";
try {
var response = await _dio.get(
url,
options: Options(headers: {"x-access-token": _loginData.token}),
);
if (response.statusCode == 200) {
var userData = UserDataByCode.fromJson(response.data);
return userDataByCode;
} else {
_printLog("Upload sendCode 2", response, level: Level.WARNING);
return null;
}
} on DioError catch (e) {
_printLog("Upload sendCode 3", e, level: Level.SHOUT);
return null;
}
}
这是 UserDataByCode 模型,它应该在调用后返回要作为名称插入到文本中的数据,但它返回 null:import 'dart:convert';
class UserDataByCode {
String firstName;
String surname;
int balance;
double ticketValue;
int remainingTickets;
UserDataByCode(
{this.firstName,
this.surname,
this.balance,
this.ticketValue,
this.remainingTickets,
});
UserDataByCode.fromJson(Map<String, dynamic> json) {
firstName = json['user_name_first'];
surname = json['user_name_surname'];
balance = json['tckt_balance'];
ticketValue = json['ticket_value'];
remainingTickets = json['remaining_tickets'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['firstName'] = this.firstName;
data['surname'] = this.surname;
data['balance'] = this.balance;
data['ticketValue'] = this.ticketValue;
data['remainingTickets'] = this.remainingTickets;
return data;
}
@override
String toString() {
return jsonEncode(toJson());
}
}
在我的 ContentManager 中我放了这个,因为对于在我之前工作的其他电话,我都做得很好,我伤害了同样的事情..
Future<UserDataByCode> getUserDataByCode() async {
return _userDataByCode = await connection.sendCode();
}
UserDataByCode getUserDataByCodeSync() {
if (_userDataByCode == null) {
print("Still no _userDataByCode");
return null;
}
return _userDataByCode;
}
更新:
更新 2:
return FutureBuilder<UserData>(
future: contentManager.getUserData(),
builder: (context, AsyncSnapshot<UserData> snapUserData) {
所有小部件代码:
Widget build(BuildContext context) {
Size size = MediaQuery.of(context).size;
_buttonHeight = size.height * .05;
//double splitPoint = size.height / 7;
return FutureBuilder<UserData>(
future: contentManager.getUserData(),
builder: (context, AsyncSnapshot<UserData> snapUserData) {
if (snapUserData.hasError)
return Container(
child: Center(
child: Text("There was some error"),
),
);
if (snapUserData.connectionState != ConnectionState.done)
return Container(
child: Center(
child: CircularProgressIndicator(valueColor: new AlwaysStoppedAnimation<Color>(appColors.yellow)),
),
);
return Container(
color: appColors.primaryColor,
child: ListView(
primary: false,
children: [
// TITOLO
Align(
alignment: Alignment.center,
child: Container(
child: Text(
localization.showQR,
style: Theme.of(context).primaryTextTheme.headline5.copyWith(
color: appColors.green,
fontWeight: FontWeight.bold,
),
),
),
),
Align(
alignment: Alignment.center,
child: Container(
child: qrCodeHolder
),
),
Align(
alignment: Alignment.center,
child: Container(
child: AutoSizeText(
localization.home_subLabel,
textAlign: TextAlign.center,
maxLines: 1,
style: Theme.of(context).primaryTextTheme.headline5.copyWith(
color: appColors.green,
fontWeight: FontWeight.bold,
),
),
),
),
Padding(
padding: EdgeInsets.all(15.0),
//top: size.height * .02,
//right: size.width * .02,
child: Row(
children: [
Expanded(
child: TextField(
inputFormatters: [
new LengthLimitingTextInputFormatter(11),
],
decoration: InputDecoration(
filled: true,
fillColor: Colors.white,
focusedBorder: OutlineInputBorder(
borderSide: BorderSide(color: Colors.white),
),
enabledBorder: UnderlineInputBorder(
borderSide: BorderSide(color: Colors.white),
),
),
textAlign: TextAlign.center,
style: TextStyle(
fontSize: 18.0,
color: Colors.black,
),
),
),
IconButton(
icon: Image.asset("assets/images/send.png"),
onPressed: () async {
connection.sendCode().then((value) {
if (value != null) {
showDialog(context: context, builder: (_) => PaymentDialog());
} else {
showDialog(context: context, builder: (_) => PaymentDialog());
}
});
}
//onPressed: () => showDialog(context: context, builder: (_) => PaymentDialog()),
),
]
),
),
],
padding: EdgeInsets.all(20.0),
),
);
});
}
}
解决方案
推荐阅读
- cmake - 在 make 阶段安装 FluentBit 失败
- mongodb - 无法从远程客户端访问 Docker 容器内的 MongoDB 副本集
- python - requests_html 阻止网站重定向
- testing - JMeter:按标题授权对结果进行分组?
- android - 抛出 java.io.IOException: 当我尝试从服务器下载 txt 文件时,http:/ 上的流意外结束
- c# - 如何在.Net核心API的自定义动作过滤器中传递模型
- mysql - 如何通过其在mysql中的索引获取枚举字段值
- react-native - react-native:远程调试器停止工作
- shiny - 闪亮的部署错误:在安装包“lwgeom”时将 GEOS 升级到 3.6.0 或更高版本
- python - Flask 从 html 模板接收 null