我正在尝试使用从API获得的数据创建列表视图

时间:2018-05-25 18:51:18

标签: dart flutter

class Search extends StatefulWidget {

  int id;
  Search([this.id]);

  @override
  _SearchState createState() => new _SearchState();

}  
class _SearchState extends State<Search> {


  @override
  void initState() {
    super.initState();
  }

  void dispose() {
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    widget.id;

return new Scaffold(

      appBar: new AppBar(

        actions: <Widget>[

          new IconButton(
              icon: new Icon(Icons.exit_to_app),
              onPressed: _getTicketDetails
          ),


        ],
        centerTitle: true,
        title: new Text
          ("TicketsDetails", style: const TextStyle(
          fontFamily: 'Poppins'
          ,),
        ),

      ),

  );
  }

   _getTicketDetails() async {
    print(widget.id);
    var userDetails = {};
    final response = await http.get(
        "https....", headers: {
      HttpHeaders.AUTHORIZATION: access_token
    });

    List returnTicketDetails = json.decode(response.body);

    print(returnTicketDetails);

    for (var i = 0; i < (returnTicketDetails?.length ?? 0); i++) {
      final ticketresponse = await http.get(
          "https:...
              .toString()}", headers: {
        HttpHeaders.AUTHORIZATION:
        access_token
      });

      userDetails[returnTicketDetails[i]["user_id"]] =
          json.decode(ticketresponse.body);
    }
    print(userDetails);

  }

}

我想在Listview中显示我的userDeatails的索引, 但由于某种原因,编译器无法识别userDetails, 因此它突出显示为错误。我以前做过这个,但是我 不知道为什么我现在遇到这个问题。

在我运行它的那一刻,只显示appBar

1 个答案:

答案 0 :(得分:0)

如评论中所述,您的userDetails变量的范围是_getTicketDetails方法。如果你想让它对你的其他人可见,你需要在该方法之外声明它:

var userDetails = {}; // Moved outside

_getTicketDetails() async {
  ...
}

虽然请注意,在修改此变量时也应调用setState,以便Flutter知道此窗口小部件已更改并需要重建/呈现。