본문 바로가기

Flutter & Dart

Flutter & Dart Rest API 사용

반응형

API를 사용하기 위해 간단하게 모델을 만들고 

class Field {
  late String col1;
  late String col2;
  late String col3;
  late String col4;
  late String col5;

  Field(
      {required this.col1,
      required this.col2,
      required this.col3,
      required this.col4,
      required this.col5,});

  Field.formMap(Map<String, dynamic>? map) {
    col1 = map?['col1'] ?? '';
    col2 = map?['col2'] ?? '';
    col3 = map?['col3'] ?? '';
    col4 = map?['col4'] ?? '';
    col5 = map?['col5'] ?? '';
  }
}

 

데이터를 받아줄 Provider를 선언 한다.

class NewsProviders {
  Future<List<Field>> getNews(String url) async {
    String path = 'URL 기초 경로';
    List<Field> field = [];
    Uri uri = Uri.parse(path + url);

    final response = await http.get(uri);
    if (response.statusCode == 200) {
      if (jsonDecode(response.body)['Result'].toString() == 'SUCC') {
        field = jsonDecode(response.body)['Msg'].map<Field>((article) {
          return Field.formMap(article);
        }).toList();
      }
    }
    return field;
  }
}

 

API데이터를 받아오기 위해서는 

Provider를 선언 하고 리스트로 받는다 

//var field = <Field>[].obs;
List field = [];

NewsProviders newsProviders = NewsProviders();
void iniData() async {
  field = await newsProviders.getNews("프로시저 '$변수','$변수','$변수','$변수','$변수','$변수' ");
  }

 

List 선언 방법에는 2가지가 있는데 

  • var field = <Field>[].obs;
  • List field = [];

와 같은 2가지 방법이 있다.

 

이 두가지 방법은 사용 방법은 같다.

그러나 중요한 차이가 있다.

 

  • var field = <Field>[].obs; 

와 같은 방법 사용 시 Field에 선언된 변수만 받아 올 수 있다.

그렇지만 자동완성 기능을 사용 할 수 있다

 

  • List field = [];

의 방법을 사용 하면 변수의 타입이 dynamic 으로 설정이 된다

 

반응형