如何在flutter中实现未来的下拉列表,并随着用户的选择而更新数值。

问题描述 投票:0回答:1

我正在努力从api中获取未来的值,并将其转换为 下拉列表. 但我有这个问题在 当用户选择数值时,在下拉菜单中显示数值。 这是我的代码。 =>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=&gt。 =>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=&gt。

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'],
    );
  }
}


json api flutter drop-down-menu future
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.