Текстовый виджет отображается в Перезагрузке, но не в Горячей Перезагрузке - PullRequest
0 голосов
/ 23 марта 2020

У меня есть класс, который будет извлекать данные из API и сохранять результат в LIST и отображать содержимое в моем текстовом виджете. Когда я Hot перезагрузить его отображение «По умолчанию». Но работает нормально, когда Hust перезагрузить снова, хотя я защищаю текстовый виджет от NULL. Ниже приведен мой код. Пожалуйста, помогите.

class Sample extends StatefulWidget {
  @override
  SampleState createState() => SampleState();
}

class SampleState extends State<Sample> {
  var selected = [];

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

    callAsyncFetch();
  }

  callAsyncFetch() async {      

    var url = 'http://10.0.2.2/abc.php';    
    var response = await http.get(url);    
    var jsonData = json.decode(response.body);
    print(jsonData);

    for (var u in jsonData) {         

      if (u.substring(0, 2) == 'ABC') {
        selected.add(u);
      }
    }
    for (var u in selected) {
      print(u);
    }

    print(selected.length);  // working fine
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Container(
        child: Column(children: [
          selected.isEmpty
              ? CircularProgressIndicator()
              : new Text(selected[0].toString()),
        // i have tried this also but no luck       
       new Text(selectedStudentsIT.length!=0?selectedStudentsIT[0].toString():'Default Value'),

        ]),
      ),
    );
  }
}

1 Ответ

2 голосов
/ 23 марта 2020

Существует простая проблема в том, что при горячей перезагрузке он не запустит initState снова . Вы можете проверить это, напечатав что-то в initState, в то время как при полной перезагрузке он вызовет initState .

Я думаю, что вы хотите отобразить данные, когда вы получите ответ от API.

Я думаю, что это может быть легко достигнуто с помощью вызова setState в конце функции callAsyncFetch , поэтому, когда вы получаете данные с сервера, он обновляет пользовательский интерфейс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...