首页 > 解决方案 > 更新屏幕自动颤动

问题描述

如您所见,我的屏幕包含框。按下删除按钮后,box25 已成功从数据库中删除,但仍显示在屏幕上。当我移至配置文件选项卡并返回框选项卡时,box25 已删除。

删除功能:

void removeBox(int id) async {
    // if (_formKey.currentState.validate()) {
    String boxId = _boxNameController.text;

    boxApi.removeBox(id).then((data) {
      if (data != null) {
        Navigator.pop(context);
      }
      /*  Navigator.push(
            context, MaterialPageRoute(builder: (context) => BoxSettings()));*/
      ScaffoldMessenger.of(context).showSnackBar(snackBar1);
    }).catchError((error) {
      ScaffoldMessenger.of(context)
          .showSnackBar(SnackBar(content: Text(error.toString())));
    });
    setState(() {});
  }


  Future<String> removeBox(int id) async {
    SharedPreferences localStorage = await SharedPreferences.getInstance();
    String token = localStorage.getString('access_token');
    await checkInternet();
    Map<String, String> headers = {
      'Content-type': 'application/json',
      'Accept': 'application/json',
      'Authorization': 'Bearer $token'
    };
    Map<String, dynamic> body = {
      'boxId': id,
    };
    print(body);
    inspect(body);
    var response = await http.post(Uri.parse(ApiUtil.REMOVE_BOX),
        headers: headers, body: jsonEncode(body));
    print(response.statusCode);
    print(response);
    if (response.statusCode == 200) {
      var body = jsonDecode(response.body);
      var data = body['message'];
      print(data);
      inspect(data);
      return data;
    } else {
      throw Exception('Failed to remove box');
    }

  }

在此处输入图像描述

如何自动从屏幕上删除框?

标签: apiflutterdart

解决方案


你做的一切都是正确的......但是当你的响应成功时,你应该从列表中本地删除该框,然后你应该调用 setState()。

伪代码:-

/// Remove box ontap

onTap(){
/// server method call
.....
/// if response successful then remove box loacally
list.removeAt(index);
setState(){}

}



推荐阅读