parent
0f6eb6d9ee
commit
703051ddca
@ -0,0 +1,30 @@
|
||||
import 'package:aku_community_manager/ui/home/home_page.dart';
|
||||
import 'package:aku_community_manager/ui/widgets/common/aku_scaffold.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:power_logger/power_logger.dart';
|
||||
|
||||
class SplashPage extends StatefulWidget {
|
||||
SplashPage({Key key}) : super(key: key);
|
||||
|
||||
@override
|
||||
_SplashPageState createState() => _SplashPageState();
|
||||
}
|
||||
|
||||
class _SplashPageState extends State<SplashPage> {
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
Future.delayed(Duration(milliseconds: 300), () {
|
||||
if (mounted) PowerLogger.init(context);
|
||||
});
|
||||
Future.delayed(Duration(milliseconds: 3000), () {
|
||||
Get.to(HomePage());
|
||||
});
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold();
|
||||
}
|
||||
}
|
@ -0,0 +1,19 @@
|
||||
class BaseFileModel {
|
||||
String message;
|
||||
String url;
|
||||
bool status;
|
||||
BaseFileModel({
|
||||
this.message,
|
||||
this.url,
|
||||
this.status,
|
||||
});
|
||||
|
||||
BaseFileModel.err(
|
||||
{this.message = '未知错误', this.url = '', this.status = false});
|
||||
|
||||
BaseFileModel.fromJson(Map<String, dynamic> json) {
|
||||
message = json['message'] ?? '';
|
||||
url = json['url'] ?? null;
|
||||
status = json['status'] ?? false;
|
||||
}
|
||||
}
|
@ -0,0 +1,27 @@
|
||||
class BaseListModel {
|
||||
int pageCount;
|
||||
int rowCount;
|
||||
List<dynamic> tableList;
|
||||
BaseListModel({
|
||||
this.pageCount,
|
||||
this.rowCount,
|
||||
this.tableList,
|
||||
});
|
||||
BaseListModel.zero({
|
||||
this.pageCount = 0,
|
||||
this.rowCount = 0,
|
||||
this.tableList = const [],
|
||||
});
|
||||
|
||||
BaseListModel.err({
|
||||
this.pageCount = 0,
|
||||
this.rowCount = 0,
|
||||
this.tableList = const [],
|
||||
});
|
||||
|
||||
BaseListModel.fromJson(Map<String, dynamic> json) {
|
||||
pageCount = json['pageCount'] ?? 0;
|
||||
rowCount = json['rowCount'] ?? 0;
|
||||
tableList = json['tableList'] ?? [];
|
||||
}
|
||||
}
|
@ -0,0 +1,20 @@
|
||||
class BaseModel {
|
||||
int code;
|
||||
String message;
|
||||
bool status;
|
||||
dynamic data;
|
||||
BaseModel({
|
||||
this.code,
|
||||
this.message,
|
||||
this.data,
|
||||
this.status,
|
||||
});
|
||||
|
||||
BaseModel.err({this.message = '未知错误', this.status = false});
|
||||
|
||||
BaseModel.fromJson(Map<String, dynamic> json) {
|
||||
message = json['message'] ?? '';
|
||||
data = json['data'] ?? null;
|
||||
status = json['status'] ?? false;
|
||||
}
|
||||
}
|
@ -0,0 +1,21 @@
|
||||
class LoginModel {
|
||||
String message;
|
||||
String token;
|
||||
bool status;
|
||||
|
||||
LoginModel({this.message, this.token, this.status});
|
||||
|
||||
LoginModel.fromJson(Map<String, dynamic> json) {
|
||||
message = json['message'];
|
||||
token = json['token'];
|
||||
status = json['status'];
|
||||
}
|
||||
|
||||
Map<String, dynamic> toJson() {
|
||||
final Map<String, dynamic> data = new Map<String, dynamic>();
|
||||
data['message'] = this.message;
|
||||
data['token'] = this.token;
|
||||
data['status'] = this.status;
|
||||
return data;
|
||||
}
|
||||
}
|
@ -0,0 +1,168 @@
|
||||
// Dart imports:
|
||||
import 'dart:io';
|
||||
|
||||
// Package imports:
|
||||
import 'package:aku_community_manager/const/api.dart';
|
||||
import 'package:aku_community_manager/utils/network/base_file_model.dart';
|
||||
import 'package:aku_community_manager/utils/network/base_list_model.dart';
|
||||
import 'package:aku_community_manager/utils/network/base_model.dart';
|
||||
import 'package:bot_toast/bot_toast.dart';
|
||||
import 'package:dio/dio.dart';
|
||||
import 'package:get/get.dart' hide Response, FormData, MultipartFile;
|
||||
import 'package:power_logger/power_logger.dart';
|
||||
|
||||
|
||||
|
||||
class NetUtil {
|
||||
Dio _dio;
|
||||
static final NetUtil _netUtil = NetUtil._internal();
|
||||
|
||||
factory NetUtil() => _netUtil;
|
||||
|
||||
Dio get dio => _dio;
|
||||
|
||||
NetUtil._internal() {
|
||||
BaseOptions options = BaseOptions(
|
||||
baseUrl: API.baseURL,
|
||||
connectTimeout: API.networkTimeOut,
|
||||
receiveTimeout: API.networkTimeOut,
|
||||
sendTimeout: API.networkTimeOut,
|
||||
headers: {},
|
||||
);
|
||||
if (_dio == null) _dio = Dio(options);
|
||||
dio.interceptors.add(InterceptorsWrapper(
|
||||
onRequest: (RequestOptions options) async => options,
|
||||
onResponse: (Response response) async {
|
||||
LoggerData.addData(response);
|
||||
return response;
|
||||
},
|
||||
onError: (DioError error) async {
|
||||
_parseErr(error);
|
||||
return error;
|
||||
},
|
||||
));
|
||||
}
|
||||
|
||||
///call auth after login
|
||||
auth(String token) {
|
||||
_dio.options.headers.putIfAbsent('App-Admin-Token', () => token);
|
||||
}
|
||||
|
||||
/// ## alias of Dio().get
|
||||
///
|
||||
/// GET method
|
||||
Future<BaseModel> get(
|
||||
String path, {
|
||||
Map<String, dynamic> params,
|
||||
bool showMessage = false,
|
||||
}) async {
|
||||
try {
|
||||
Response res = await _dio.get(path, queryParameters: params);
|
||||
BaseModel baseModel = BaseModel.fromJson(res.data);
|
||||
_parseRequestError(baseModel, showMessage: showMessage);
|
||||
return baseModel;
|
||||
} on DioError catch (e) {
|
||||
_parseErr(e);
|
||||
}
|
||||
return BaseModel.err();
|
||||
}
|
||||
|
||||
/// ## alias of Dio().post
|
||||
///
|
||||
/// POST method
|
||||
///
|
||||
/// only work with JSON.
|
||||
Future<BaseModel> post(
|
||||
String path, {
|
||||
Map<String, dynamic> params,
|
||||
bool showMessage = false,
|
||||
}) async {
|
||||
try {
|
||||
Response res = await _dio.post(path, data: params);
|
||||
|
||||
BaseModel baseModel = BaseModel.fromJson(res.data);
|
||||
_parseRequestError(baseModel, showMessage: showMessage);
|
||||
|
||||
return baseModel;
|
||||
} on DioError catch (e) {
|
||||
_parseErr(e);
|
||||
}
|
||||
return BaseModel.err();
|
||||
}
|
||||
|
||||
Future<BaseListModel> getList(
|
||||
String path, {
|
||||
Map<String, dynamic> params,
|
||||
}) async {
|
||||
try {
|
||||
Response res = await _dio.get(path, queryParameters: params);
|
||||
BaseListModel baseListModel = BaseListModel.fromJson(res.data);
|
||||
return baseListModel;
|
||||
} on DioError catch (e) {
|
||||
_parseErr(e);
|
||||
}
|
||||
return BaseListModel.err();
|
||||
}
|
||||
|
||||
Future<BaseFileModel> upload(String path, File file) async {
|
||||
try {
|
||||
Response res = await _dio.post(path,
|
||||
data: FormData.fromMap({
|
||||
'file': await MultipartFile.fromFile(file.path),
|
||||
}));
|
||||
BaseFileModel baseListModel = BaseFileModel.fromJson(res.data);
|
||||
return baseListModel;
|
||||
} on DioError catch (e) {
|
||||
print(e);
|
||||
}
|
||||
return BaseFileModel.err();
|
||||
}
|
||||
|
||||
Future<List<String>> uploadFiles(List<File> files, String api) async {
|
||||
List<String> urls = [];
|
||||
if (files.isEmpty) {
|
||||
return [];
|
||||
} else {
|
||||
for (var item in files) {
|
||||
BaseFileModel model = await NetUtil().upload(api, item);
|
||||
urls.add(model.url);
|
||||
}
|
||||
}
|
||||
|
||||
return urls;
|
||||
}
|
||||
|
||||
_parseErr(DioError err) {
|
||||
LoggerData.addData(err);
|
||||
_makeToast(String message) {
|
||||
BotToast.showText(text: '$message\_${err?.response?.statusCode ?? ''}');
|
||||
}
|
||||
|
||||
switch (err.type) {
|
||||
case DioErrorType.CONNECT_TIMEOUT:
|
||||
case DioErrorType.SEND_TIMEOUT:
|
||||
case DioErrorType.RECEIVE_TIMEOUT:
|
||||
_makeToast('连接超时');
|
||||
break;
|
||||
case DioErrorType.RESPONSE:
|
||||
_makeToast('服务器出错');
|
||||
break;
|
||||
case DioErrorType.CANCEL:
|
||||
break;
|
||||
case DioErrorType.DEFAULT:
|
||||
_makeToast('未知错误');
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
_parseRequestError(BaseModel model, {bool showMessage = false}) {
|
||||
// final userProvider = Provider.of<UserProvider>(Get.context, listen: false);
|
||||
// if (!model.status && model.message == '登录失效,请登录' && userProvider.isLogin) {
|
||||
// userProvider.logout();
|
||||
// Get.offAll(SignInPage());
|
||||
// }
|
||||
if (!model.status || showMessage) {
|
||||
BotToast.showText(text: model.message);
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in new issue