英文:
How to convert status from number to text
问题
Sure, I'll help you modify your Flutter code to display the states as text instead of numbers. Here's the updated code:
class _view_problemState extends State<view_problem> {
TextEditingController _searchController = TextEditingController();
List<problemModel> problemlist = [];
List<problemModel> originalList = [];
StreamController _streamController = StreamController();
// Define a map to map numbers to their corresponding text values
Map<int, String> statusMap = {
0: "pending approval",
1: "approve",
};
Future getAllProblem() async {
problemlist = await problemcontrollers().getProblem();
originalList = problemlist;
// Map the status numbers to text values
for (var problem in problemlist) {
problem.status = statusMap[problem.status] ?? "Unknown";
}
_streamController.sink.add(problemlist);
}
@override
void initState() {
getAllProblem();
super.initState();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
backgroundColor: Color.fromARGB(255, 14, 12, 134),
title: const Text('show information'),
),
body: Container(
child: Column(
children: <Widget>[
Padding(
padding: const EdgeInsets.all(8.0),
),
Expanded(
child: StreamBuilder(
stream: _streamController.stream,
builder: (context, snapshots) {
if (snapshots.hasData) {
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),
),
),
);
}));
}
return Center(
child: CircularProgressIndicator(),
);
},
),
)
],
),
),
);
}
}
I've added a statusMap
that maps the status numbers to their corresponding text values. In the getAllProblem
function, I've updated the problem.status
to use the text value based on the mapping. This will display the statuses as text in the ListView
.
英文:
I'm storing the states in a table which I keep as numbers 0 and 1. I want to get these states displayed in the listview builder.
But I want these statuses to be displayed as text instead of numbers.
0 = pending approval
1 = approve
How do I start building to get that result? I just started writing flutter.
class _view_problemState extends State<view_problem> {
TextEditingController _searchController = TextEditingController();
List<problemModel> problemlist = [];
List<problemModel> originalList = [];
StreamController _streamController = StreamController();
Future getAllProblem() async {
problemlist = await problemcontrollers().getProblem();
originalList = problemlist;
_streamController.sink.add(problemlist);
}
@override
void initState() {
getAllProblem();
super.initState();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
backgroundColor: Color.fromARGB(255, 14, 12, 134),
title: const Text('show information'),
),
body: Container(
child: Column(
children: <Widget>[
Padding(
padding: const EdgeInsets.all(8.0),
)
Expanded(
child: StreamBuilder(
stream: _streamController.stream,
builder: (context, snapshots) {
if (snapshots.hasData) {
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),
),
),
);
}));
}
return Center(
child: CircularProgressIndicator(),
);
},
),
)
],
),
),
);
}
}
答案1
得分: 0
我们可以在这种情况下使用三元运算符。
只需像这样更新您的字幕:
Text(
problem.status == 0 ? '待批准' : '已批准',
style: TextStyle(
fontWeight: FontWeight.bold, fontSize: 17),
)
英文:
We can use ternary operator in this case.
Just update your subtitle like that
Text(
problem.status == 0 ? 'pending approval' : 'approve',
style: TextStyle(
fontWeight: FontWeight.bold, fontSize: 17),
)
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论