添加 jwt_decoder 依赖;更新 AuthApi 枚举以支持获取录像列表;新增录像响应模型和相关状态管理;重构 AuthViewModel 以解析和存储 JWT 数据;更新 ScanQrCodePage 以处理用户鉴权和获取录像列表。
This commit is contained in:
@@ -14,3 +14,68 @@ class GetTokenResModel {
|
||||
return {'deviceAccessToken': deviceAccessToken};
|
||||
}
|
||||
}
|
||||
|
||||
/// 查看录像响应模型
|
||||
class GetRecordListResModel {
|
||||
String? path;
|
||||
List<RecordListItem>? items;
|
||||
|
||||
GetRecordListResModel({this.path, this.items});
|
||||
|
||||
factory GetRecordListResModel.fromJson(Map<String, dynamic> json) =>
|
||||
GetRecordListResModel(
|
||||
path: json['path'],
|
||||
items: json['items'] == null
|
||||
? []
|
||||
: List<RecordListItem>.from(
|
||||
json['items']!.map((x) => RecordListItem.fromJson(x)),
|
||||
),
|
||||
);
|
||||
|
||||
Map<String, dynamic> toJson() => {
|
||||
'path': path,
|
||||
'items': items == null
|
||||
? []
|
||||
: List<dynamic>.from(items!.map((x) => x.toJson())),
|
||||
};
|
||||
}
|
||||
|
||||
class RecordListItem {
|
||||
String? name;
|
||||
String? path;
|
||||
String? type;
|
||||
int? size;
|
||||
DateTime? modTime;
|
||||
String? url;
|
||||
String? extension;
|
||||
|
||||
RecordListItem({
|
||||
this.name,
|
||||
this.path,
|
||||
this.type,
|
||||
this.size,
|
||||
this.modTime,
|
||||
this.url,
|
||||
this.extension,
|
||||
});
|
||||
|
||||
factory RecordListItem.fromJson(Map<String, dynamic> json) => RecordListItem(
|
||||
name: json['name'] ?? '',
|
||||
path: json['path'] ?? '',
|
||||
type: json['type'] ?? '',
|
||||
size: json['size'] ?? 0,
|
||||
modTime: json['modTime'] == null ? null : DateTime.parse(json['modTime']),
|
||||
url: json['url'] ?? '',
|
||||
extension: json['extension'] ?? '',
|
||||
);
|
||||
|
||||
Map<String, dynamic> toJson() => {
|
||||
'name': name,
|
||||
'path': path,
|
||||
'type': type,
|
||||
'size': size,
|
||||
'modTime': modTime?.toIso8601String(),
|
||||
'url': url,
|
||||
'extension': extension,
|
||||
};
|
||||
}
|
||||
|
||||
@@ -0,0 +1,56 @@
|
||||
// To parse this JSON data, do
|
||||
//
|
||||
// final jwtDecodedData = jwtDecodedDataFromJson(jsonString);
|
||||
|
||||
import 'dart:convert';
|
||||
|
||||
JwtDecodedData jwtDecodedDataFromJson(String str) =>
|
||||
JwtDecodedData.fromJson(json.decode(str));
|
||||
|
||||
String jwtDecodedDataToJson(JwtDecodedData data) => json.encode(data.toJson());
|
||||
|
||||
class JwtDecodedData {
|
||||
String? authType;
|
||||
String? deviceCode;
|
||||
int? deviceId;
|
||||
String? deviceRole;
|
||||
String? eventName;
|
||||
double? oId;
|
||||
List<double>? oIds;
|
||||
double? organizerId;
|
||||
|
||||
JwtDecodedData({
|
||||
this.authType,
|
||||
this.deviceCode,
|
||||
this.deviceId,
|
||||
this.deviceRole,
|
||||
this.eventName,
|
||||
this.oId,
|
||||
this.oIds,
|
||||
this.organizerId,
|
||||
});
|
||||
|
||||
factory JwtDecodedData.fromJson(Map<String, dynamic> json) => JwtDecodedData(
|
||||
authType: json["authType"],
|
||||
deviceCode: json["deviceCode"],
|
||||
deviceId: json["deviceId"],
|
||||
deviceRole: json["deviceRole"],
|
||||
eventName: json["eventName"],
|
||||
oId: json["oId"]?.toDouble(),
|
||||
oIds: json["oIds"] == null
|
||||
? []
|
||||
: List<double>.from(json["oIds"]!.map((x) => x?.toDouble())),
|
||||
organizerId: json["organizerId"]?.toDouble(),
|
||||
);
|
||||
|
||||
Map<String, dynamic> toJson() => {
|
||||
"authType": authType,
|
||||
"deviceCode": deviceCode,
|
||||
"deviceId": deviceId,
|
||||
"deviceRole": deviceRole,
|
||||
"eventName": eventName,
|
||||
"oId": oId,
|
||||
"oIds": oIds == null ? [] : List<dynamic>.from(oIds!.map((x) => x)),
|
||||
"organizerId": organizerId,
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user