如何在颤振中实现未来的下拉列表并根据用户选择更新值
Posted
技术标签:
【中文标题】如何在颤振中实现未来的下拉列表并根据用户选择更新值【英文标题】:How to implement future drop down list in flutter and update the value as user selected 【发布时间】:2020-09-25 04:53:12 【问题描述】:我正在努力从 api 到未来获取值并将其转换为 DropDownList。但是我在在用户选择下拉列表中的值时显示下拉列表中的值时遇到问题。这是我的代码。 =>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=> =>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=> =>
import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;
class JsonApiDropdown extends StatefulWidget
@override
JsonApiDropdownState createState()
return new JsonApiDropdownState();
class JsonApiDropdownState extends State<JsonApiDropdown>
Users _currentUser;
final String uri = 'https://jsonplaceholder.typicode.com/users';
Future<List<Users>> _fetchUsers() async
var response = await http.get(uri);
if (response.statusCode == 200)
final items = json.decode(response.body).cast<Map<String, dynamic>>();
List<Users> listOfUsers = items.map<Users>((json)
return Users.fromJson(json);
).toList();
return listOfUsers;
else
throw Exception('Failed to load internet');
@override
Widget build(BuildContext context)
return Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
mainAxisSize: MainAxisSize.max,
children: <Widget>[
FutureBuilder<List<Users>>(
future: _fetchUsers(),
builder:
(BuildContext context, AsyncSnapshot<List<Users>> snapshot)
if (!snapshot.hasData) return CircularProgressIndicator();
return DropdownButton<Users>(
items: snapshot.data
.map((user) => DropdownMenuItem<Users>(
child: Text(user.name),
value: user,
))
.toList(),
onChanged: (Users value)
setState(()
_currentUser = value;
);
,
isExpanded: false,
//value: _currentUser,
hint: Text('Select User'),
);
),
SizedBox(height: 20.0),
_currentUser != null
? Text("Name: " +
_currentUser.name +
"\n Email: " +
_currentUser.email +
"\n Username: " +
_currentUser.username)
: Text("No User selected"),
],
),
);
class Users
int id;
String name;
String username;
String email;
Users(
this.id,
this.name,
this.username,
this.email,
);
factory Users.fromJson(Map<String, dynamic> json)
return Users(
id: json['id'],
name: json['name'],
email: json['email'],
username: json['username'],
);
【问题讨论】:
【参考方案1】:您需要添加 值 =_currentUser; 在你的下拉按钮上的 onChanged 方法之后
【讨论】:
以上是关于如何在颤振中实现未来的下拉列表并根据用户选择更新值的主要内容,如果未能解决你的问题,请参考以下文章