-1

我将一个值从以前的 Stateful Widget 屏幕传递到另一个 Stateful Widget 屏幕。为什么我在 searchTermID 调用构造函数之后就失去了它的值?

class DetailScreen extends StatefulWidget {
  final int searchTermID;
  final String searchTerm;
  DetailScreen({Key key, @required this.searchTermID, this.searchTerm})
      : super(key: key);

  @override
  _DetailScreenState createState() =>
  _DetailScreenState(searchTermID: searchTermID, searchTerm: searchTerm);
}

class  _DetailScreenState extends State<DetailScreen>  {
  static int searchTermID;
  static String searchTerm;

  _DetailScreenState({searchTermID, searchTerm});

searchTermID 在这里被取消

List data = getSWData(searchTermID) as List; //edited line

  static Future<List> getSWData(searchTermID) async {
    var res = await http.get(Uri.encodeFull("http://URLTOAPI" + searchTermID.toString()),
    headers: {"Accept": "application/json"});
    return json.decode(res.body);


}
4

1 回答 1

0

而不是这个

class  _DetailScreenState extends State<DetailScreen>  {
  static int searchTermID;
  static String searchTerm;

  _DetailScreenState({searchTermID, searchTerm});
searchTermID being nulled out here forward

List data = getSWData(searchTermID) as List; //edited line

  static Future<List> getSWData(searchTermID) async {
    var res = await http.get(Uri.encodeFull("http://URLTOAPI" + searchTermID.toString()),
    headers: {"Accept": "application/json"});
    return json.decode(res.body);


}

像这样试试。要从有状态类访问其状态类的值,请使用小部件

class  _DetailScreenState extends State<DetailScreen>  {


List data = getSWData(widget.searchTermID) as List; //edited line

  static Future<List> getSWData(widget.searchTermID) async {
    var res = await http.get(Uri.encodeFull("http://URLTOAPI" + widget.searchTermID.toString()),
    headers: {"Accept": "application/json"});
    return json.decode(res.body);
}
于 2019-04-23T05:17:28.760 回答