flutter - 尝试在颤振中使用已映射的json列表实现多选
问题描述
我需要同样的帮助实际上,我想为我的颤振项目使用多选。我已经有了 JSON-map 列表形式的项目。但我不知道如何做到。例如在一个单独的页面上,我创建了一个角色列表视图。在新页面上,我想在多选中获取角色列表以发送通知
我的角色存储库-
Future<Stream<Roles>> getRoleslist() async {
final String accessToken = '${currentUser.value.accesstoken}';
final url = '$api/role_list';
Map<String, dynamic> _queryParams = {'access_token': accessToken};
var uri = Uri.parse(url).replace(queryParameters: _queryParams);
try {
final client = new http.Client();
final streamedRest = await client.send(http.Request('post', uri));
return streamedRest.stream
.transform(utf8.decoder)
.transform(json.decoder)
.map((data) => Helper.getdata(data))
.expand((data) => (data as List))
.map((data) => Roles.fromJSON(data));
} catch (e) {
print(CustomTrace(StackTrace.current, message: url.toString()).toString());
return new Stream.value(new Roles.fromJSON({}));
} }
我的榜样——
class Roles {
String roleslack;
String rolecode;
String label;
String status;
String createdby;
String updateby;
Roles();
Roles.fromJSON(Map<String, dynamic> jsonMap) {
try {
roleslack = jsonMap['slack'].toString();
rolecode = jsonMap['role_code'].toString();
label = jsonMap['label'].toString();
status = jsonMap['status']['label'].toString();
createdby = jsonMap['created_by']['fullname'].toString();
updateby = jsonMap['updated_by']['fullname'].toString();
} catch (e) {
roleslack = '';
rolecode = '';
label = '';
status = '';
createdby = '';
updateby = '';
print(e);
}} }
和角色控制器 -
List<Roles> roles = [];
GlobalKey<ScaffoldState> scaffoldKey;
RolesController() {
this.scaffoldKey = new GlobalKey<ScaffoldState>();
}
void listRoles({String message}) async {
final Stream<Roles> stream = await getRoleslist();
stream.listen((Roles _roles) {
setState(() => roles.add(_roles));
}, onError: (a) {
print(a);
// ignore: deprecated_member_use
scaffoldKey?.currentState?.showSnackBar(SnackBar(
content: Text('Verify your internet connection'),
));
}, onDone: () {
if (message != null) {
// ignore: deprecated_member_use
scaffoldKey?.currentState?.showSnackBar(SnackBar(
content: Text(message),
));
}
});
}
我对如何实现已经映射的 Jason 列表来进行多选感到非常困惑。
class Animal {
final int id;
final String name;
Animal({
this.id,
this.name,
});
}
class _MyHomePageState extends State<MyHomePage> {
static List<Animal> _animals = [
Animal(id: 1, name: "Lion"),
Animal(id: 2, name: "Flamingo"),
Animal(id: 3, name: "Hippo"),
Animal(id: 4, name: "Horse"),
Animal(id: 5, name: "Tiger"),
Animal(id: 6, name: "Penguin"),
Animal(id: 7, name: "Spider"),
Animal(id: 8, name: "Snake"),
Animal(id: 9, name: "Bear"),
Animal(id: 10, name: "Beaver"),
Animal(id: 11, name: "Cat"),
Animal(id: 12, name: "Fish"),
Animal(id: 13, name: "Rabbit"),
Animal(id: 14, name: "Mouse"),
Animal(id: 15, name: "Dog"),
Animal(id: 16, name: "Zebra"),
Animal(id: 17, name: "Cow"),
Animal(id: 18, name: "Frog"),
Animal(id: 19, name: "Blue Jay"),
Animal(id: 20, name: "Moose"),
Animal(id: 21, name: "Gecko"),
Animal(id: 22, name: "Kangaroo"),
Animal(id: 23, name: "Shark"),
Animal(id: 24, name: "Crocodile"),
Animal(id: 25, name: "Owl"),
Animal(id: 26, name: "Dragonfly"),
Animal(id: 27, name: "Dolphin"),
];
final _items = _animals
.map((animal) => MultiSelectItem<Animal>(animal, animal.name))
.toList();
我想将此静态动物定义列表转换为我已经映射的 JSON 角色列表
解决方案
推荐阅读
- excel - VBA根据另一个单元格剪切特定范围的单元格
- jquery - $.ajax 没有向我的 demo.php 文件发送数据
- php - Wordpress admin_post 回调未触发
- ios - 滚动视图捕获的滑动
- java - H2 问题:请求在 H2 控制台中工作,而不是在 jUnit 测试中
- sql - 拆分日期列,然后按日期分组并在 SQL 中获取最大值
- linux - 在 shell 脚本中将交互式命令作为后台进程运行
- react-native - React-navigation 5x 使用 Stack.Screen screenProps
- c# - 如何在套接字编程C#中处理接收到的TCP数据包
- sql-server - SQL Server 2019 UDF 中的 @@ROWCOUNT 错误