Flutter - 요청 인터페이스 및 DAO 계층 구현
4344 단어 [Flutter 사소한 지식】
Flutter에는 레이아웃 외에 가장 중요한 네트워크와 데이터 조작이 있습니다.
Flutter의 모델 층은 어떻게 실현됩니까?
class HomeModel {
final ConfigModel config;
final List bannerList;
final List localNavList;
final GridNavModel gridNav;
final List subNavList;
HomeModel(
{this.config,
this.bannerList,
this.localNavList,
this.gridNav,
this.subNavList});
Map toJson() {
return {
'config': config,
'bannerList': bannerList,
'localNavList': localNavList,
'gridNav': gridNav,
'subNavList': subNavList,
};
}
factory HomeModel.fromJson(Map json) {
var localNavListJson = json['localNavList'] as List; // list
List localNavList = localNavListJson
.map((i) => CommonModel.fromJson(i))
.toList(); // list
var bannerListJson = json['bannerList'] as List; // list
List bannerList = bannerListJson
.map((i) => CommonModel.fromJson(i))
.toList(); // list
var subNavListJson = json['subNavList'] as List; // list
List subNavList = subNavListJson
.map((i) => CommonModel.fromJson(i))
.toList(); // list
return HomeModel(
config: ConfigModel.fromJson(json['config']),
bannerList: bannerList,
localNavList: localNavList,
gridNav: GridNavModel.formJson(json['gridNav']),
subNavList: subNavList,
);
}
}
만약 다른 모델 실례를 사용한다면 fromJson을 실현해야 한다
class CommonModel {
final String icon;
final String title;
final String url;
final String statusBarColor;
final bool hideAppBar;
CommonModel(
{this.icon, this.title, this.url, this.statusBarColor, this.hideAppBar});
/// json
Map toJson() {
return {
'icon': icon,
'title': title,
'url': url,
'statusBarColor': statusBarColor,
'hideAppBar': hideAppBar,
};
}
/// CommonModel
factory CommonModel.fromJson(Map json) {
return CommonModel(
icon: json['icon'],
title: json['title'],
url: json['url'],
statusBarColor: json['statusBarColor'],
hideAppBar: json['hideAppBar']);
}
}
Flutter가 네트워크에 반환된 데이터를 요청하려면 몇 개의 패키지를 가져와야 합니다
import 'dart:async';
import 'dart:convert';
import 'package:http/http.dart' as http; //
비동기적으로 네트워크에서 되돌아오는 데이터 가져오기
import 'package:prim_fultter_app/model/home_model.dart';
const Home_URL = "http://www.devio.org/io/flutter_app/json/home_page.json";
//
class HomeDao {
static Future fetch() async {
final response = await http.get(Home_URL);
if (response.statusCode == 200) {
//
Utf8Decoder utf8decoder = Utf8Decoder(); //
var result = json.decode(utf8decoder.convert(response.bodyBytes)); //
return HomeModel.fromJson(result);
} else {
throw Exception('load url fail!');
}
}
}
결과를 얻는 몇 가지 방법
Future loadData() async {
//
// HomeDao.fetch().then((result) {
// // json
// resultString = json.encode(result.config);// model json
// print("homeDao:" + resultString);
// }).catchError((e) {
// resultString = e.toString();
// print("homeDao:" + resultString);
// });
//
try {
HomeModel model = await HomeDao.fetch();
resultString = json.encode(model);// model json
print("homeDao:" + resultString);
} catch (e) {
print(e.toString());
}
return null;
}
글쓴이: JakePrim
기사 링크:https://jakeprim.cn/2019/03/26/flutter-1-2/
저작권 고지: 본 블로그의 모든 기사는 특별 고지를 제외하고 CC BY-NC-SA 4.0 라이센스 계약을 따릅니다.전재는 Jake Prim 기술 연구원에서 왔다는 것을 명기해 주십시오!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Flutter-WebView 사용에 대한 자세한 설명Flutter에도 WebView가 있는데 Flutter는 어떻게 웹을 불러옵니까?Flutter는 WebView 플러그인을 제공하고flutter_webview_plugin: ^0.3.1pubspce를 가져옵니다.yam...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.