본문 바로가기

코딩강의/shopping_list(플러터-유데미)

228. Handling the "No Data" Case

1. 앱 재시작 후 첫 item 로딩할 때 null을 받으면(값이 없으면) 무한로딩에 걸린다. 이를 해결해보자.

 

- grocery_list.dart

https://github.com/academind/flutter-complete-guide-course-resources/blob/main/Code%20Snapshots/12%20Backend%20%26%20Http/08%20Handling%20the%20No%20Data%20Case/lib/widgets/grocery_list.dart

 

1)     @override
  void initState() {
    super.initState();
    _loadItems();
  }

  void _loadItems() async {
    final url = Uri.https(
        'flutter-prep-default-rtdb.firebaseio.com', 'shopping-list.json');
    final response = await http.get(url);

    if (response.statusCode >= 400) {
      setState(() {
        _error = 'Failed to fetch data. Please try again later.';
      });
    }

    if (response.body == 'null') {
      setState(() {
        _isLoading = false;
      });
      return;
    }

-->  response.body가 null(문자값으로 받아옴)이면 로딩화면을 멈추기 위해 false로 바꿔주고 빌드위젯을 실행시키면 안되기 때문에 리턴값을 마무리해준다.