김마드 2023. 11. 15. 20:02

1. item을 삭제하는 기능을 활성해보자.

 

 

- grocery_list.dart

https://github.com/academind/flutter-complete-guide-course-resources/blob/main/Code%20Snapshots/12%20Backend%20%26%20Http/07%20Sending%20Delete%20Requests/lib/widgets/grocery_list.dart

1)   void _removeItem(GroceryItem item) async {
    final index = _groceryItems.indexOf(item);
    setState(() {
      _groceryItems.remove(item);
    });

    final url = Uri.https('fltter-prep-default-rtdb.firebaseio.com',
        'shopping-list/${item.id}.json');

    final response = await http.delete(url);

    if (response.statusCode >= 400) {
      // Optional: Show error message
      setState(() {
        _groceryItems.insert(index, item);
      });
    }
  }

--> setState를 맨 위에 설정한 이유는, 일단 로컬에서 삭제해주고 (괜히 로딩되는거를 보여줄필요 없음) 나중에 문제가 되면 다시 setState에서 insert를 함으로써 값을 다시 추가해주는 로직이다. 만약 이렇게 된다면 스낵바나 다른 방법을 통해 메시지를 보여주면 더 좋다.

 

그리고 http.delete를 통해 파베 디비에서 값을 삭제해줄 수 있다. (url주소에 구체적인 값이 지정되어 있음)