颤振,使用InitState方法的问题和使用setState的问题

时间:2019-12-08 17:21:04

标签: flutter

我已经尝试了很多事情来调用API和获取数据,这已经令人满意了,但是我无法通过正确的方法来完成它,当我通过构建来完成时,它可以完美地工作,但事实并非如此。正确的地方,当我尝试在initState中执行此操作时,它根本不起作用,甚至不执行print();

$models = Country::find()->where(['flag'=>1])->asArray()->all();
$items = ArrayHelper::map($model, 'id', static function ($data) {
    return "{$data['country']} [{$data['code']}]";
});

** 解决了这个问题,在与整个开发团队联系后,我们意识到我的手机没有互联网,开心的一天**

1 个答案:

答案 0 :(得分:0)

下面的代码应该可以工作,我在initState方法中添加了一个回调。

class LoaderPublicity extends StatefulWidget {
  @override
  State<StatefulWidget> createState() {
    // TODO: implement createState
    return _LoaderPublicity();
  }
}

class _LoaderPublicity extends State<LoaderPublicity> {
  List allPublicity;

  @override
  void initState() {
    super.initState();
    getPublicity().then((value) {
      print(allPublicity);
      print(value);
    });
  }

  //Obtener todas las publicidades desde el api
  Future<void> getPublicity() async {
    var response = await http.post(
        'http://contablenift.co:3008/consult/getGeneralPublicity',
        body: {'actividad': "Turistico", 'location': "No"})
    print('????????2');
    if (response.statusCode == 200) {
      setState(() {
        allPublicity = Post.fromJson(json.decode(response.body)).data;
      });
    }
  }

  @override
  Widget build(BuildContext context) {
    return Container(
      child: Column(
        children: <Widget>[Text('Aqui va la publicidad')],
      ),
    );
  }
}