Flutter 如何在API颤振数据上实现if语句
我有一个来自API的响应,其中包含一些数据。其中一个主题是地位。状态可以是两个值(传输或正常)。如果只是传输,我想在屏幕上显示状态值。 我创建了如下传输小部件:Flutter 如何在API颤振数据上实现if语句,flutter,dart,Flutter,Dart,我有一个来自API的响应,其中包含一些数据。其中一个主题是地位。状态可以是两个值(传输或正常)。如果只是传输,我想在屏幕上显示状态值。 我创建了如下传输小部件: Widget build(BuildContext context) { return SafeArea( minimum: const EdgeInsets.only( top: 20.0, right: 5.0, left: 5.0, bottom: 10.0), ch
Widget build(BuildContext context) {
return SafeArea(
minimum: const EdgeInsets.only(
top: 20.0, right: 5.0, left: 5.0, bottom: 10.0),
child: Center(
child: Scaffold(
backgroundColor: Color(0xFFF6F7F8),
body: Stack(
children: [
Container(
child: SingleChildScrollView(
child: Column(
mainAxisAlignment: MainAxisAlignment.start,
children: [
Row(
mainAxisAlignment: MainAxisAlignment.start,
children: [
Container(
padding: EdgeInsets.all(10),
child: ElevatedButton.icon(
style: ElevatedButton.styleFrom(
primary: KBlue,
shape: RoundedRectangleBorder(
borderRadius:
BorderRadius.circular(30))),
onPressed: () {
showDialog(
context: context,
builder: (BuildContext context) =>
_addNewBox(context),
);
},
label: Text(
'Ajouter un nouveau box',
style: TextStyle(color: Colors.white),
),
icon: Icon(
CommunityMaterialIcons.plus,
color: Colors.white,
),
),
),
],
),
FutureBuilder<UserBox>(
future: boxApi.fetchBoxes(),
builder: (context, snapshot) {
switch (snapshot.connectionState) {
case ConnectionState.none:
return Text('no connection');
case ConnectionState.active:
case ConnectionState.waiting:
return Center(
child: CircularProgressIndicator(),
);
break;
case ConnectionState.done:
if (snapshot.hasError) {
return Text('No Boxes');
} else {
if (snapshot.hasData) {
var userbox = snapshot.data;
return Column(
children: List.generate(
userbox.boxes.length,
(index) {
final box = userbox.boxes[index];
final status = (box.status);
return Card(
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
transfering(status),
Padding(
padding: EdgeInsets.only(
left: 10,
right: 10,
),
child: ExpansionTile(
tilePadding:
EdgeInsets.only(
left: 10),
title: Text(
'${box.boxName}',
style: TextStyle(
fontSize: 18,
fontWeight:
FontWeight
.w500),
),
Widget transfering(status) {
print(status);
if (status != 'normal') {
return Transform.translate(
offset: const Offset(-60.0, 15.0),
child: Text(
"$status",
style: TextStyle(
// color: Colors.white,
fontSize: 10,
fontWeight: FontWeight.normal),
),
);
}
return status;
}
小部件构建(构建上下文){
返回安全区(
最小值:仅限常量边设置(
顶部:20.0,右侧:5.0,左侧:5.0,底部:10.0),
儿童:中心(
孩子:脚手架(
背景颜色:颜色(0xFFF6F7F8),
主体:堆栈(
儿童:[
容器(
子:SingleChildScrollView(
子:列(
mainAxisAlignment:mainAxisAlignment.start,
儿童:[
划船(
mainAxisAlignment:mainAxisAlignment.start,
儿童:[
容器(
填充:边缘设置。全部(10),
子项:ElevatedButton.icon(
样式:ElevatedButton.styleFrom(
小学:KBlue,
形状:圆形矩形边框(
边界半径:
边界半径。圆形(30)),
已按下:(){
显示对话框(
上下文:上下文,
生成器:(BuildContext上下文)=>
_addNewBox(上下文),
);
},
标签:文本(
“Ajun nouveau box”,
样式:TextStyle(颜色:Colors.white),
),
图标:图标(
社区材料管理员,
颜色:颜色,白色,
),
),
),
],
),
未来建设者(
future:boxApi.fetchbox(),
生成器:(上下文,快照){
交换机(快照.连接状态){
案例连接状态。无:
返回文本(“无连接”);
案例连接状态.active:
案例连接状态。正在等待:
返回中心(
子对象:CircularProgressIndicator(),
);
打破
案例连接状态。完成:
if(snapshot.hasError){
返回文本(“无框”);
}否则{
if(snapshot.hasData){
var userbox=snapshot.data;
返回列(
子项:List.generate(
userbox.box.length,
(索引){
final box=userbox.box[索引];
最终状态=(框状态);
回程卡(
子:列(
mainAxisSize:mainAxisSize.min,
儿童:[
转让(身份),
填充物(
填充:仅限边缘设置(
左:10,,
右:10,,
),
子文件:扩展文件(
瓷砖添加:
仅限EdgeInsets(
左:10),,
标题:正文(
“${box.boxName}”,
样式:TextStyle(
尺码:18,
容重:
容重
.w500),
),
小部件传输(状态){
打印(状态);
如果(状态!=“正常”){
返回Transform.translate(
偏移量:常数偏移量(-60.0,15.0),
子:文本(
“$status”,
样式:TextStyle(
//颜色:颜色,白色,
尺寸:10,
fontWeight:fontWeight.正常),
),
);
}
返回状态;
}
如何显示状态,如果
return Card(
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
if(status == 'Transfering') // add this
transfering(status),