繁体   English   中英

在抖动状态下更新图像

[英]update image in state in flutter

我有一个listView.builder,其中显示了来自api的数据。 当我从列表项对GestureDetector进行onTap时,我将数据发送到api。 返回数据后,我想更改列表项。 但是我做不到。

例如我的状态一项是这样的:

new Container(
  margin: EdgeInsets.only(right: 10, top: 15),
  child: new GestureDetector(
    child: isFavorite == 1 ? 
      new Image.asset(
      "assets/images/favorite.png",
      fit: BoxFit.contain,
      height: 35,
      width: 70,
      )
      : new Image.asset(
      "assets/images/unfavorite.png",
      fit: BoxFit.contain,
      color: Colors.white,
      height: 35,
      width: 70,
    ),

     onTap: () async {
       if (isLogin == true){
         if(isFavorite == 0) {
           getIsLikeAccommodation(accommodation.id , 1 );
         }
       else {
       getIsLikeAccommodation( accommodation.id , 0 );
     }
   }
  else {
     // safeye vorod be narm afzar bala biad
       }
     },
 )
),

我连接到服务器:

getIsLikeAccommodation(int _accommodation_id , int _kind ) async {

 if(await checkConnectionInternet()) {
  print(_accommodation_id);
  Map response = await AccommodationService().getIsLikeAccommodation({ "accommodation_id" : _accommodation_id , "is_favorite" : _kind});
  var _responsCode = response['code'];
  var _isLikeResponse = response['accommodation']['is_favorite'];
  if (_responsCode == '1002'){

    After this condition is true , I want the state condition to be checked again and the view changed
  }


  } else {
    _scaffoldKey.currentState.showSnackBar(
      new SnackBar(
        content: new GestureDetector(

          child: new Row(
            mainAxisAlignment: MainAxisAlignment.spaceBetween,
            children: <Widget>[
              new Text('از اتصال دستگاه به اینترنت مطمئن شوید', style: TextStyle(fontFamily: 'Shabnam')),
              new Icon(Icons.wifi_lock , color: Colors.white)
            ],
          ),
        )
      )
    );
  }
}

Future<bool> checkConnectionInternet() async {
  var connectivityResult = await (new      Connectivity().checkConnectivity());
  return connectivityResult == ConnectivityResult.mobile || connectivityResult == ConnectivityResult.wifi;
 }
}

后条件

如果(_responsCode =='1002')

是的,我想再次检查状态条件并更改视图

如果我理解正确,则更改条件后需要调用setState函数。

https://api.flutter.dev/flutter/widgets/State/setState.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM