mirror of
https://github.com/HChaZZY/PiliPlus.git
synced 2025-12-06 09:13:48 +08:00
feat: space opus
Closes #833 Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
27
lib/models/space_opus/cover.dart
Normal file
27
lib/models/space_opus/cover.dart
Normal file
@@ -0,0 +1,27 @@
|
||||
import 'package:flutter/foundation.dart';
|
||||
|
||||
class Cover {
|
||||
int? height;
|
||||
String? url;
|
||||
int? width;
|
||||
late double ratio;
|
||||
|
||||
Cover({this.height, this.url, this.width, required this.ratio});
|
||||
|
||||
Cover.fromJson(Map<String, dynamic> json) {
|
||||
height = json['height'] as int?;
|
||||
url = json['url'] as String?;
|
||||
width = json['width'] as int?;
|
||||
if (height != null && width != null) {
|
||||
ratio = clampDouble(height! / width!, 0.68, 2.7);
|
||||
} else {
|
||||
ratio = 1;
|
||||
}
|
||||
}
|
||||
|
||||
Map<String, dynamic> toJson() => {
|
||||
'height': height,
|
||||
'url': url,
|
||||
'width': width,
|
||||
};
|
||||
}
|
||||
26
lib/models/space_opus/data.dart
Normal file
26
lib/models/space_opus/data.dart
Normal file
@@ -0,0 +1,26 @@
|
||||
import 'package:PiliPlus/models/space_opus/item.dart';
|
||||
|
||||
class SpaceOpusData {
|
||||
bool? hasMore;
|
||||
List<SpaceOpusItemModel>? items;
|
||||
String? offset;
|
||||
int? updateNum;
|
||||
|
||||
SpaceOpusData({this.hasMore, this.items, this.offset, this.updateNum});
|
||||
|
||||
factory SpaceOpusData.fromJson(Map<String, dynamic> json) => SpaceOpusData(
|
||||
hasMore: json['has_more'] as bool?,
|
||||
items: (json['items'] as List<dynamic>?)
|
||||
?.map((e) => SpaceOpusItemModel.fromJson(e as Map<String, dynamic>))
|
||||
.toList(),
|
||||
offset: json['offset'] as String?,
|
||||
updateNum: json['update_num'] as int?,
|
||||
);
|
||||
|
||||
Map<String, dynamic> toJson() => {
|
||||
'has_more': hasMore,
|
||||
'items': items?.map((e) => e.toJson()).toList(),
|
||||
'offset': offset,
|
||||
'update_num': updateNum,
|
||||
};
|
||||
}
|
||||
34
lib/models/space_opus/item.dart
Normal file
34
lib/models/space_opus/item.dart
Normal file
@@ -0,0 +1,34 @@
|
||||
import 'package:PiliPlus/models/space_opus/cover.dart';
|
||||
import 'package:PiliPlus/models/space_opus/stat.dart';
|
||||
|
||||
class SpaceOpusItemModel {
|
||||
String? content;
|
||||
String? jumpUrl;
|
||||
String? opusId;
|
||||
Stat? stat;
|
||||
Cover? cover;
|
||||
|
||||
SpaceOpusItemModel(
|
||||
{this.content, this.jumpUrl, this.opusId, this.stat, this.cover});
|
||||
|
||||
factory SpaceOpusItemModel.fromJson(Map<String, dynamic> json) =>
|
||||
SpaceOpusItemModel(
|
||||
content: json['content'] as String?,
|
||||
jumpUrl: json['jump_url'] as String?,
|
||||
opusId: json['opus_id'] as String?,
|
||||
stat: json['stat'] == null
|
||||
? null
|
||||
: Stat.fromJson(json['stat'] as Map<String, dynamic>),
|
||||
cover: json['cover'] == null
|
||||
? null
|
||||
: Cover.fromJson(json['cover'] as Map<String, dynamic>),
|
||||
);
|
||||
|
||||
Map<String, dynamic> toJson() => {
|
||||
'content': content,
|
||||
'jump_url': jumpUrl,
|
||||
'opus_id': opusId,
|
||||
'stat': stat?.toJson(),
|
||||
'cover': cover?.toJson(),
|
||||
};
|
||||
}
|
||||
13
lib/models/space_opus/stat.dart
Normal file
13
lib/models/space_opus/stat.dart
Normal file
@@ -0,0 +1,13 @@
|
||||
class Stat {
|
||||
String? like;
|
||||
|
||||
Stat({this.like});
|
||||
|
||||
factory Stat.fromJson(Map<String, dynamic> json) => Stat(
|
||||
like: json['like'] as String?,
|
||||
);
|
||||
|
||||
Map<String, dynamic> toJson() => {
|
||||
'like': like,
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user