我想从数据库获取状态并在列表视图中显示为文本,但我存储在数据库中的状态是数字,我如何将这些状态设置为文本?
0 = start
2 = pending approval
3 = Approved
return ListView.builder(
itemCount: problemlist.length,
itemBuilder: ((context, index) {
problemModel problem = problemlist[index];
return Card(
margin: EdgeInsets.all(10),
child: ListTile(
leading: CircleAvatar(
backgroundImage: NetworkImage(
'http://192.168.1.5/skc/Problem_image/${problem.image}',
),
),
title: Text(
problem.name_surname,
style: TextStyle(
fontWeight: FontWeight.bold, fontSize: 19),
),
subtitle: Text(
problem.status,
style: TextStyle(
fontWeight: FontWeight.bold, fontSize: 17),
),
),
);
}));
最直接的方法是创建一个辅助函数来更改值的类型。
String getStatusText(int statusCode) {
switch (statusCode) {
case 0:
return 'Start';
case 2:
return 'Pending Approval';
case 3:
return 'Approved';
default:
return 'Unknown Status';
}
}
或者稍后,如果您有更复杂的对象,该对象不仅具有状态并直接管理应用程序中的自定义类型
class Status {
final int code;
final String text;
Status._(this.code, this.text);
factory Status.fromCode(int statusCode) {
switch (statusCode) {
case 0:
return Status._(statusCode, 'Start');
case 2:
return Status._(statusCode, 'Pending Approval');
case 3:
return Status._(statusCode, 'Approved');
default:
return Status._(statusCode, 'Unknown Status');
}
}
}
创建状态枚举
enum StatusEnum{
Start,
PendingApproval,
Approved,
}
可以通过
访问StatusEnum.values[i].name
其中“i”是状态代码