diff --git a/lib/common/extension/exception_ext.dart b/lib/common/extension/exception_ext.dart new file mode 100644 index 0000000..a2e9b3a --- /dev/null +++ b/lib/common/extension/exception_ext.dart @@ -0,0 +1,11 @@ +import 'package:wow_english/common/request/exception.dart'; + +extension ExceptionExtension on Exception { + String get getShowMessage { + if (this is ApiException) { + return (this as ApiException).message ?? '未知错误'; + } else { + return '未知错误'; + } + } +} diff --git a/lib/common/request/api_response/api_response_entity.g.dart b/lib/common/request/api_response/api_response_entity.g.dart index 48ff8fa..43cff1e 100644 --- a/lib/common/request/api_response/api_response_entity.g.dart +++ b/lib/common/request/api_response/api_response_entity.g.dart @@ -19,7 +19,7 @@ ApiResponse $ApiResponseFromJson(Map json) { print("ApiResponse T-type:$type, data-type:${json['data'].runtimeType}"); } if (json['data'] != null) { - data = jsonConvert.convert(json['data']); + data = JsonConvert.fromJsonAsT(json['data']); } if (data != null) { apiResponseEntity.data = data; diff --git a/lib/common/request/dao/home_dao.dart b/lib/common/request/dao/home_dao.dart index af37f82..1a980df 100644 --- a/lib/common/request/dao/home_dao.dart +++ b/lib/common/request/dao/home_dao.dart @@ -1,10 +1,12 @@ import 'package:wow_english/common/request/apis.dart'; import 'package:wow_english/common/request/request_client.dart'; +import '../../../models/course_module_entity.dart'; + class HomeDao { ///获取课程模块信息 - static Future?> courseModule() async { - var data = await requestClient.get?>(Apis.courseModule); + static Future?> courseModule() async { + var data = await requestClient.get>(Apis.courseModule); return data; } diff --git a/lib/common/request/request_client.dart b/lib/common/request/request_client.dart index 588e2a1..b7721ee 100644 --- a/lib/common/request/request_client.dart +++ b/lib/common/request/request_client.dart @@ -148,8 +148,6 @@ class RequestClient { raw.value = response.data; return raw as T; } else { - print('response.data.runtimeType=${response.data.runtimeType}'); - // 应对response的header中content-type: [text/html;charset=utf-8]的情况 // 实际上都是json格式返回 Map json; @@ -158,7 +156,6 @@ class RequestClient { } else { json = response.data; } - //ApiResponse apiResponse = ApiResponse.fromJson(json.decode(response.data)); ApiResponse apiResponse = ApiResponse.fromJson(json); onResponse?.call(apiResponse); return _handleBusinessResponse(apiResponse); diff --git a/lib/generated/json/base/json_convert_content.dart b/lib/generated/json/base/json_convert_content.dart index ce90351..420da84 100644 --- a/lib/generated/json/base/json_convert_content.dart +++ b/lib/generated/json/base/json_convert_content.dart @@ -4,7 +4,7 @@ // This file is automatically generated. DO NOT EDIT, all your changes would be lost. import 'package:flutter/material.dart' show debugPrint; -import 'package:wow_english/models/lesson_entity.dart'; +import 'package:wow_english/models/course_module_entity.dart'; import 'package:wow_english/models/listen_entity.dart'; import 'package:wow_english/models/user_entity.dart'; @@ -14,7 +14,7 @@ typedef EnumConvertFunction = T Function(String value); class JsonConvert { static final Map convertFuncMap = { - (LessonEntity).toString(): LessonEntity.fromJson, + (CourseModuleEntity).toString(): CourseModuleEntity.fromJson, (ListenEntity).toString(): ListenEntity.fromJson, (UserEntity).toString(): UserEntity.fromJson, }; @@ -95,8 +95,8 @@ List? convertListNotNull(dynamic value, {EnumConvertFunction? enumConvert} //list is returned by type static M? _getListChildType(List> data) { - if([] is M){ - return data.map((Map e) => LessonEntity.fromJson(e)).toList() as M; + if([] is M){ + return data.map((Map e) => CourseModuleEntity.fromJson(e)).toList() as M; } if([] is M){ return data.map((Map e) => ListenEntity.fromJson(e)).toList() as M; @@ -106,7 +106,7 @@ List? convertListNotNull(dynamic value, {EnumConvertFunction? enumConvert} } debugPrint("${M.toString()} not found"); - + return null; } @@ -117,4 +117,4 @@ List? convertListNotNull(dynamic value, {EnumConvertFunction? enumConvert} return jsonConvert.convert(json); } } -} \ No newline at end of file +} diff --git a/lib/generated/json/lesson_entity.g.dart b/lib/generated/json/course_module_entity.g.dart index f4a3cc4..ced031f 100644 --- a/lib/generated/json/lesson_entity.g.dart +++ b/lib/generated/json/course_module_entity.g.dart @@ -1,69 +1,70 @@ import 'package:wow_english/generated/json/base/json_convert_content.dart'; -import 'package:wow_english/models/lesson_entity.dart'; +import 'package:wow_english/models/course_module_entity.dart'; -LessonEntity $LessonEntityFromJson(Map json) { - final LessonEntity lessonEntity = LessonEntity(); +CourseModuleEntity $CourseModuleEntityFromJson(Map json) { + final CourseModuleEntity courseModuleEntity = CourseModuleEntity(); + final String? id = jsonConvert.convert(json['id']); + if (id != null) { + courseModuleEntity.id = id; + } final String? code = jsonConvert.convert(json['code']); if (code != null) { - lessonEntity.code = code; + courseModuleEntity.code = code; } final int? courseModuleThemeId = jsonConvert.convert(json['courseModuleThemeId']); if (courseModuleThemeId != null) { - lessonEntity.courseModuleThemeId = courseModuleThemeId; + courseModuleEntity.courseModuleThemeId = courseModuleThemeId; } final int? courseTotal = jsonConvert.convert(json['courseTotal']); if (courseTotal != null) { - lessonEntity.courseTotal = courseTotal; + courseModuleEntity.courseTotal = courseTotal; } final String? coverUrl = jsonConvert.convert(json['coverUrl']); if (coverUrl != null) { - lessonEntity.coverUrl = coverUrl; + courseModuleEntity.coverUrl = coverUrl; } final String? createTime = jsonConvert.convert(json['createTime']); if (createTime != null) { - lessonEntity.createTime = createTime; + courseModuleEntity.createTime = createTime; } final String? deleted = jsonConvert.convert(json['deleted']); if (deleted != null) { - lessonEntity.deleted = deleted; + courseModuleEntity.deleted = deleted; } final String? des = jsonConvert.convert(json['des']); if (des != null) { - lessonEntity.des = des; - } - final String? id = jsonConvert.convert(json['id']); - if (id != null) { - lessonEntity.id = id; + courseModuleEntity.des = des; } final String? modifyTime = jsonConvert.convert(json['modifyTime']); if (modifyTime != null) { - lessonEntity.modifyTime = modifyTime; + courseModuleEntity.modifyTime = modifyTime; } final String? name = jsonConvert.convert(json['name']); if (name != null) { - lessonEntity.name = name; + courseModuleEntity.name = name; } final int? opening = jsonConvert.convert(json['opening']); if (opening != null) { - lessonEntity.opening = opening; + courseModuleEntity.opening = opening; } final String? picUrl = jsonConvert.convert(json['picUrl']); if (picUrl != null) { - lessonEntity.picUrl = picUrl; + courseModuleEntity.picUrl = picUrl; } final int? sortOrder = jsonConvert.convert(json['sortOrder']); if (sortOrder != null) { - lessonEntity.sortOrder = sortOrder; + courseModuleEntity.sortOrder = sortOrder; } final int? status = jsonConvert.convert(json['status']); if (status != null) { - lessonEntity.status = status; + courseModuleEntity.status = status; } - return lessonEntity; + return courseModuleEntity; } -Map $LessonEntityToJson(LessonEntity entity) { +Map $CourseModuleEntityToJson(CourseModuleEntity entity) { final Map data = {}; + data['id'] = entity.id; data['code'] = entity.code; data['courseModuleThemeId'] = entity.courseModuleThemeId; data['courseTotal'] = entity.courseTotal; @@ -71,7 +72,6 @@ Map $LessonEntityToJson(LessonEntity entity) { data['createTime'] = entity.createTime; data['deleted'] = entity.deleted; data['des'] = entity.des; - data['id'] = entity.id; data['modifyTime'] = entity.modifyTime; data['name'] = entity.name; data['opening'] = entity.opening; @@ -79,4 +79,4 @@ Map $LessonEntityToJson(LessonEntity entity) { data['sortOrder'] = entity.sortOrder; data['status'] = entity.status; return data; -} \ No newline at end of file +} diff --git a/lib/models/lesson_entity.dart b/lib/models/course_module_entity.dart index fd22125..a028aa4 100644 --- a/lib/models/lesson_entity.dart +++ b/lib/models/course_module_entity.dart @@ -1,32 +1,33 @@ -import 'package:wow_english/generated/json/base/json_field.dart'; -import 'package:wow_english/generated/json/lesson_entity.g.dart'; import 'dart:convert'; +import 'package:wow_english/generated/json/base/json_field.dart'; +import 'package:wow_english/generated/json/course_module_entity.g.dart'; + @JsonSerializable() -class LessonEntity { - String? code; - int? courseModuleThemeId; - int? courseTotal; - String? coverUrl; - String? createTime; - String? deleted; - String? des; - String? id; - String? modifyTime; - String? name; - int? opening; - String? picUrl; - int? sortOrder; - int? status; +class CourseModuleEntity { + late String id; + String? code; + int? courseModuleThemeId; + int? courseTotal; + String? coverUrl; + String? createTime; + String? deleted; + String? des; + String? modifyTime; + String? name; + int? opening; + String? picUrl; + int? sortOrder; + int? status; - LessonEntity(); + CourseModuleEntity(); - factory LessonEntity.fromJson(Map json) => $LessonEntityFromJson(json); + factory CourseModuleEntity.fromJson(Map json) => $CourseModuleEntityFromJson(json); - Map toJson() => $LessonEntityToJson(this); + Map toJson() => $CourseModuleEntityToJson(this); - @override - String toString() { - return jsonEncode(this); - } -} \ No newline at end of file + @override + String toString() { + return jsonEncode(this); + } +} diff --git a/lib/pages/lessons/bloc/lesson_bloc.dart b/lib/pages/lessons/bloc/lesson_bloc.dart index 914f2e0..6645ca1 100644 --- a/lib/pages/lessons/bloc/lesson_bloc.dart +++ b/lib/pages/lessons/bloc/lesson_bloc.dart @@ -1,18 +1,15 @@ -import 'dart:convert'; - import 'package:flutter/cupertino.dart'; -import 'package:flutter/foundation.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:flutter_easyloading/flutter_easyloading.dart'; import 'package:wow_english/common/request/dao/home_dao.dart'; import 'package:wow_english/common/request/exception.dart'; -import 'package:wow_english/models/lesson_entity.dart'; +import 'package:wow_english/models/course_module_entity.dart'; import 'package:wow_english/utils/loading.dart'; part 'lesson_event.dart'; part 'lesson_state.dart'; class LessonBloc extends Bloc { - final int pageIndex; final PageController pageController; @@ -21,10 +18,11 @@ class LessonBloc extends Bloc { int get currentPageIndex => _currentPageIndex; - List _listData = []; - List get listData => _listData; + List _listData = []; - LessonBloc(this.pageIndex,this.pageController) : super(LessonInitial()) { + List get listData => _listData; + + LessonBloc(this.pageIndex, this.pageController) : super(LessonInitial()) { _currentPageIndex = pageIndex; on(_pageIndexChange); } @@ -32,23 +30,21 @@ class LessonBloc extends Bloc { Future requestData() async { try { await loading(() async { - List list = await HomeDao.courseModule()??[]; - // if (list.isNotEmpty) { - // for (dynamic jsonStr in list) { - // LessonEntity? data = LessonEntity.fromJson(jsonStr); - // _listData.add(data); - // } - // } - emit(LessonDataLoadState()); + var list = await HomeDao.courseModule(); + if (list?.isNotEmpty == true) { + _listData = list!; + emit(LessonDataLoadState()); + } else { + EasyLoading.showToast("数据获取失败!"); + } }); } catch (e) { if (e is ApiException) { - } } } - void _pageIndexChange(PageViewChangeIndexEvent event,Emitter emitter) async { + void _pageIndexChange(PageViewChangeIndexEvent event, Emitter emitter) async { _currentPageIndex = event.index; emitter(PageIndexChangeState()); }