初始化
This commit is contained in:
22
lib/data/api/common_api.dart
Normal file
22
lib/data/api/common_api.dart
Normal file
@@ -0,0 +1,22 @@
|
||||
|
||||
import 'package:app/core/network/request.dart';
|
||||
import '../models/common/qiu_token_dto.dart';
|
||||
import '../models/common/version_dto.dart';
|
||||
|
||||
///获取七牛token
|
||||
/// - [fileKey]: 文件key
|
||||
/// - [isPrivate]: 是否私有
|
||||
Future<QiuTokenDto> getQiuTokenApi(String fileKey, {bool isPrivate = false}) async {
|
||||
var response = await Request().get("/file/get_qiniu_upload_token", {
|
||||
"file_key": fileKey,
|
||||
"is_public_bucket": isPrivate ? 2 : 1,
|
||||
});
|
||||
return QiuTokenDto.fromJson(response);
|
||||
}
|
||||
|
||||
///获取APP最新版本
|
||||
/// - [isIos] 是否获取ios最新版本,默认安卓
|
||||
Future<VersionDto> getAppVersionApi({bool isIos = false}) async {
|
||||
var response = await Request().get("/get_latest_version", {"platform": isIos ? 2 : 1});
|
||||
return VersionDto.fromJson(response);
|
||||
}
|
||||
20
lib/data/models/api_dto.dart
Normal file
20
lib/data/models/api_dto.dart
Normal file
@@ -0,0 +1,20 @@
|
||||
class ApiDto<T> {
|
||||
final int code;
|
||||
final String message;
|
||||
final T data;
|
||||
|
||||
ApiDto({
|
||||
required this.code,
|
||||
required this.message,
|
||||
required this.data
|
||||
});
|
||||
|
||||
|
||||
factory ApiDto.fromJson(Map<String, dynamic> json) {
|
||||
return ApiDto<T>(
|
||||
code: json['code'],
|
||||
message: json['message'],
|
||||
data: json['data'],
|
||||
);
|
||||
}
|
||||
}
|
||||
24
lib/data/models/common/qiu_token_dto.dart
Normal file
24
lib/data/models/common/qiu_token_dto.dart
Normal file
@@ -0,0 +1,24 @@
|
||||
class QiuTokenDto {
|
||||
String? uploadUrl;
|
||||
String? upToken;
|
||||
String? fileKey;
|
||||
String? domain;
|
||||
|
||||
QiuTokenDto({this.uploadUrl, this.upToken, this.fileKey, this.domain});
|
||||
|
||||
Map<String, dynamic> toJson() {
|
||||
final map = <String, dynamic>{};
|
||||
map["upload_url"] = uploadUrl;
|
||||
map["up_token"] = upToken;
|
||||
map["file_key"] = fileKey;
|
||||
map["domain"] = domain;
|
||||
return map;
|
||||
}
|
||||
|
||||
QiuTokenDto.fromJson(dynamic json){
|
||||
uploadUrl = json["upload_url"] ?? "";
|
||||
upToken = json["up_token"] ?? "";
|
||||
fileKey = json["file_key"] ?? "";
|
||||
domain = json["domain"] ?? "";
|
||||
}
|
||||
}
|
||||
43
lib/data/models/common/version_dto.dart
Normal file
43
lib/data/models/common/version_dto.dart
Normal file
@@ -0,0 +1,43 @@
|
||||
class VersionDto {
|
||||
VersionDto({
|
||||
required this.latestVersion,
|
||||
required this.updatedAt,
|
||||
required this.downloadUrl,
|
||||
required this.updateContent,
|
||||
required this.createdAt,
|
||||
required this.lowVersion,
|
||||
required this.id,
|
||||
required this.downloadSize,
|
||||
});
|
||||
|
||||
String latestVersion;
|
||||
DateTime updatedAt;
|
||||
String downloadUrl;
|
||||
List<String> updateContent;
|
||||
DateTime createdAt;
|
||||
String lowVersion;
|
||||
int id;
|
||||
String downloadSize;
|
||||
|
||||
factory VersionDto.fromJson(Map<dynamic, dynamic> json) => VersionDto(
|
||||
latestVersion: json["latest_version"],
|
||||
updatedAt: DateTime.parse(json["updated_at"]),
|
||||
downloadUrl: json["download_url"],
|
||||
updateContent: List<String>.from(json["update_content"].map((x) => x)),
|
||||
createdAt: DateTime.parse(json["created_at"]),
|
||||
lowVersion: json["low_version"],
|
||||
id: json["id"],
|
||||
downloadSize: json["download_size"],
|
||||
);
|
||||
|
||||
Map<dynamic, dynamic> toJson() => {
|
||||
"latest_version": latestVersion,
|
||||
"updated_at": updatedAt.toIso8601String(),
|
||||
"download_url": downloadUrl,
|
||||
"update_content": List<dynamic>.from(updateContent.map((x) => x)),
|
||||
"created_at": createdAt.toIso8601String(),
|
||||
"low_version": lowVersion,
|
||||
"id": id,
|
||||
"download_size": downloadSize,
|
||||
};
|
||||
}
|
||||
33
lib/data/repository/auto_repo.dart
Normal file
33
lib/data/repository/auto_repo.dart
Normal file
@@ -0,0 +1,33 @@
|
||||
|
||||
import 'package:app/core/utils/storage.dart';
|
||||
|
||||
/// 登录数据仓库
|
||||
class AuthRepo {
|
||||
static final String _key = "login_info";
|
||||
|
||||
///登录储存信息
|
||||
static Future<void> saveLogin(dynamic loginDto) async {
|
||||
await Storage.set(_key, loginDto.toJson());
|
||||
}
|
||||
|
||||
///获取登录信息
|
||||
static Future<dynamic> getLoginInfo() async {
|
||||
// final loginInfo = await Storage.get<dynamic?>(
|
||||
// _key,
|
||||
// decoder: (json) => dynamic.fromJson(json),
|
||||
// );
|
||||
// return loginInfo;
|
||||
return null;
|
||||
}
|
||||
|
||||
///获取token
|
||||
static Future<String?> getToken() async {
|
||||
final loginInfo = await getLoginInfo();
|
||||
return loginInfo?.token;
|
||||
}
|
||||
|
||||
///清除登录信息
|
||||
static Future<void> clearLogin() async {
|
||||
await Storage.remove(_key);
|
||||
}
|
||||
}
|
||||
14
lib/data/stores/user_provider.dart
Normal file
14
lib/data/stores/user_provider.dart
Normal file
@@ -0,0 +1,14 @@
|
||||
import 'package:flutter_riverpod/legacy.dart';
|
||||
|
||||
final userProvider = StateNotifierProvider<UserNotifier, UserState>((ref) => UserNotifier());
|
||||
|
||||
class UserNotifier extends StateNotifier<UserState> {
|
||||
UserNotifier() : super(UserState());
|
||||
}
|
||||
|
||||
/// 用户数据
|
||||
class UserState {
|
||||
String token;
|
||||
|
||||
UserState({this.token = ""});
|
||||
}
|
||||
Reference in New Issue
Block a user