mirror of
https://github.com/HChaZZY/PiliPlus.git
synced 2025-12-06 09:13:48 +08:00
Refactor member page (#3)
* refactor: member page * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip
This commit is contained in:
37
lib/models/space_archive/badge.dart
Normal file
37
lib/models/space_archive/badge.dart
Normal file
@@ -0,0 +1,37 @@
|
||||
import 'package:json_annotation/json_annotation.dart';
|
||||
|
||||
part 'badge.g.dart';
|
||||
|
||||
@JsonSerializable()
|
||||
class Badge {
|
||||
String? text;
|
||||
@JsonKey(name: 'text_color')
|
||||
String? textColor;
|
||||
@JsonKey(name: 'text_color_night')
|
||||
String? textColorNight;
|
||||
@JsonKey(name: 'bg_color')
|
||||
String? bgColor;
|
||||
@JsonKey(name: 'bg_color_night')
|
||||
String? bgColorNight;
|
||||
@JsonKey(name: 'border_color')
|
||||
String? borderColor;
|
||||
@JsonKey(name: 'border_color_night')
|
||||
String? borderColorNight;
|
||||
@JsonKey(name: 'bg_style')
|
||||
int? bgStyle;
|
||||
|
||||
Badge({
|
||||
this.text,
|
||||
this.textColor,
|
||||
this.textColorNight,
|
||||
this.bgColor,
|
||||
this.bgColorNight,
|
||||
this.borderColor,
|
||||
this.borderColorNight,
|
||||
this.bgStyle,
|
||||
});
|
||||
|
||||
factory Badge.fromJson(Map<String, dynamic> json) => _$BadgeFromJson(json);
|
||||
|
||||
Map<String, dynamic> toJson() => _$BadgeToJson(this);
|
||||
}
|
||||
29
lib/models/space_archive/badge.g.dart
Normal file
29
lib/models/space_archive/badge.g.dart
Normal file
@@ -0,0 +1,29 @@
|
||||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
|
||||
part of 'badge.dart';
|
||||
|
||||
// **************************************************************************
|
||||
// JsonSerializableGenerator
|
||||
// **************************************************************************
|
||||
|
||||
Badge _$BadgeFromJson(Map<String, dynamic> json) => Badge(
|
||||
text: json['text'] as String?,
|
||||
textColor: json['text_color'] as String?,
|
||||
textColorNight: json['text_color_night'] as String?,
|
||||
bgColor: json['bg_color'] as String?,
|
||||
bgColorNight: json['bg_color_night'] as String?,
|
||||
borderColor: json['border_color'] as String?,
|
||||
borderColorNight: json['border_color_night'] as String?,
|
||||
bgStyle: (json['bg_style'] as num?)?.toInt(),
|
||||
);
|
||||
|
||||
Map<String, dynamic> _$BadgeToJson(Badge instance) => <String, dynamic>{
|
||||
'text': instance.text,
|
||||
'text_color': instance.textColor,
|
||||
'text_color_night': instance.textColorNight,
|
||||
'bg_color': instance.bgColor,
|
||||
'bg_color_night': instance.bgColorNight,
|
||||
'border_color': instance.borderColor,
|
||||
'border_color_night': instance.borderColorNight,
|
||||
'bg_style': instance.bgStyle,
|
||||
};
|
||||
18
lib/models/space_archive/cursor_attr.dart
Normal file
18
lib/models/space_archive/cursor_attr.dart
Normal file
@@ -0,0 +1,18 @@
|
||||
import 'package:json_annotation/json_annotation.dart';
|
||||
|
||||
part 'cursor_attr.g.dart';
|
||||
|
||||
@JsonSerializable()
|
||||
class CursorAttr {
|
||||
@JsonKey(name: 'is_last_watched_arc')
|
||||
bool? isLastWatchedArc;
|
||||
int? rank;
|
||||
|
||||
CursorAttr({this.isLastWatchedArc, this.rank});
|
||||
|
||||
factory CursorAttr.fromJson(Map<String, dynamic> json) {
|
||||
return _$CursorAttrFromJson(json);
|
||||
}
|
||||
|
||||
Map<String, dynamic> toJson() => _$CursorAttrToJson(this);
|
||||
}
|
||||
18
lib/models/space_archive/cursor_attr.g.dart
Normal file
18
lib/models/space_archive/cursor_attr.g.dart
Normal file
@@ -0,0 +1,18 @@
|
||||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
|
||||
part of 'cursor_attr.dart';
|
||||
|
||||
// **************************************************************************
|
||||
// JsonSerializableGenerator
|
||||
// **************************************************************************
|
||||
|
||||
CursorAttr _$CursorAttrFromJson(Map<String, dynamic> json) => CursorAttr(
|
||||
isLastWatchedArc: json['is_last_watched_arc'] as bool?,
|
||||
rank: (json['rank'] as num?)?.toInt(),
|
||||
);
|
||||
|
||||
Map<String, dynamic> _$CursorAttrToJson(CursorAttr instance) =>
|
||||
<String, dynamic>{
|
||||
'is_last_watched_arc': instance.isLastWatchedArc,
|
||||
'rank': instance.rank,
|
||||
};
|
||||
39
lib/models/space_archive/data.dart
Normal file
39
lib/models/space_archive/data.dart
Normal file
@@ -0,0 +1,39 @@
|
||||
import 'package:json_annotation/json_annotation.dart';
|
||||
|
||||
import 'episodic_button.dart';
|
||||
import 'item.dart';
|
||||
import 'last_watched_locator.dart';
|
||||
import 'order.dart';
|
||||
|
||||
part 'data.g.dart';
|
||||
|
||||
@JsonSerializable()
|
||||
class Data {
|
||||
@JsonKey(name: 'episodic_button')
|
||||
EpisodicButton? episodicButton;
|
||||
List<Order>? order;
|
||||
int? count;
|
||||
List<Item>? item;
|
||||
@JsonKey(name: 'last_watched_locator')
|
||||
LastWatchedLocator? lastWatchedLocator;
|
||||
@JsonKey(name: 'has_next')
|
||||
bool? hasNext;
|
||||
@JsonKey(name: 'has_prev')
|
||||
bool? hasPrev;
|
||||
int? next;
|
||||
|
||||
Data({
|
||||
this.episodicButton,
|
||||
this.order,
|
||||
this.count,
|
||||
this.item,
|
||||
this.lastWatchedLocator,
|
||||
this.hasNext,
|
||||
this.hasPrev,
|
||||
this.next,
|
||||
});
|
||||
|
||||
factory Data.fromJson(Map<String, dynamic> json) => _$DataFromJson(json);
|
||||
|
||||
Map<String, dynamic> toJson() => _$DataToJson(this);
|
||||
}
|
||||
39
lib/models/space_archive/data.g.dart
Normal file
39
lib/models/space_archive/data.g.dart
Normal file
@@ -0,0 +1,39 @@
|
||||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
|
||||
part of 'data.dart';
|
||||
|
||||
// **************************************************************************
|
||||
// JsonSerializableGenerator
|
||||
// **************************************************************************
|
||||
|
||||
Data _$DataFromJson(Map<String, dynamic> json) => Data(
|
||||
episodicButton: json['episodic_button'] == null
|
||||
? null
|
||||
: EpisodicButton.fromJson(
|
||||
json['episodic_button'] as Map<String, dynamic>),
|
||||
order: (json['order'] as List<dynamic>?)
|
||||
?.map((e) => Order.fromJson(e as Map<String, dynamic>))
|
||||
.toList(),
|
||||
count: (json['count'] as num?)?.toInt(),
|
||||
item: (json['item'] as List<dynamic>?)
|
||||
?.map((e) => Item.fromJson(e as Map<String, dynamic>))
|
||||
.toList(),
|
||||
lastWatchedLocator: json['last_watched_locator'] == null
|
||||
? null
|
||||
: LastWatchedLocator.fromJson(
|
||||
json['last_watched_locator'] as Map<String, dynamic>),
|
||||
hasNext: json['has_next'] as bool?,
|
||||
hasPrev: json['has_prev'] as bool?,
|
||||
next: json['next'],
|
||||
);
|
||||
|
||||
Map<String, dynamic> _$DataToJson(Data instance) => <String, dynamic>{
|
||||
'episodic_button': instance.episodicButton,
|
||||
'order': instance.order,
|
||||
'count': instance.count,
|
||||
'item': instance.item,
|
||||
'last_watched_locator': instance.lastWatchedLocator,
|
||||
'has_next': instance.hasNext,
|
||||
'has_prev': instance.hasPrev,
|
||||
'next': instance.next,
|
||||
};
|
||||
17
lib/models/space_archive/episodic_button.dart
Normal file
17
lib/models/space_archive/episodic_button.dart
Normal file
@@ -0,0 +1,17 @@
|
||||
import 'package:json_annotation/json_annotation.dart';
|
||||
|
||||
part 'episodic_button.g.dart';
|
||||
|
||||
@JsonSerializable()
|
||||
class EpisodicButton {
|
||||
String? text;
|
||||
String? uri;
|
||||
|
||||
EpisodicButton({this.text, this.uri});
|
||||
|
||||
factory EpisodicButton.fromJson(Map<String, dynamic> json) {
|
||||
return _$EpisodicButtonFromJson(json);
|
||||
}
|
||||
|
||||
Map<String, dynamic> toJson() => _$EpisodicButtonToJson(this);
|
||||
}
|
||||
19
lib/models/space_archive/episodic_button.g.dart
Normal file
19
lib/models/space_archive/episodic_button.g.dart
Normal file
@@ -0,0 +1,19 @@
|
||||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
|
||||
part of 'episodic_button.dart';
|
||||
|
||||
// **************************************************************************
|
||||
// JsonSerializableGenerator
|
||||
// **************************************************************************
|
||||
|
||||
EpisodicButton _$EpisodicButtonFromJson(Map<String, dynamic> json) =>
|
||||
EpisodicButton(
|
||||
text: json['text'] as String?,
|
||||
uri: json['uri'] as String?,
|
||||
);
|
||||
|
||||
Map<String, dynamic> _$EpisodicButtonToJson(EpisodicButton instance) =>
|
||||
<String, dynamic>{
|
||||
'text': instance.text,
|
||||
'uri': instance.uri,
|
||||
};
|
||||
103
lib/models/space_archive/item.dart
Normal file
103
lib/models/space_archive/item.dart
Normal file
@@ -0,0 +1,103 @@
|
||||
import 'package:json_annotation/json_annotation.dart';
|
||||
|
||||
import 'badge.dart';
|
||||
import 'cursor_attr.dart';
|
||||
import 'three_point.dart';
|
||||
|
||||
part 'item.g.dart';
|
||||
|
||||
@JsonSerializable()
|
||||
class Item {
|
||||
String? title;
|
||||
String? subtitle;
|
||||
String? tname;
|
||||
String? cover;
|
||||
@JsonKey(name: 'cover_icon')
|
||||
String? coverIcon;
|
||||
String? uri;
|
||||
String? param;
|
||||
String? goto;
|
||||
String? length;
|
||||
int? duration;
|
||||
@JsonKey(name: 'is_popular')
|
||||
bool? isPopular;
|
||||
@JsonKey(name: 'is_steins')
|
||||
bool? isSteins;
|
||||
@JsonKey(name: 'is_ugcpay')
|
||||
bool? isUgcpay;
|
||||
@JsonKey(name: 'is_cooperation')
|
||||
bool? isCooperation;
|
||||
@JsonKey(name: 'is_pgc')
|
||||
bool? isPgc;
|
||||
@JsonKey(name: 'is_live_playback')
|
||||
bool? isLivePlayback;
|
||||
@JsonKey(name: 'is_pugv')
|
||||
bool? isPugv;
|
||||
@JsonKey(name: 'is_fold')
|
||||
bool? isFold;
|
||||
@JsonKey(name: 'is_oneself')
|
||||
bool? isOneself;
|
||||
int? play;
|
||||
int? danmaku;
|
||||
int? ctime;
|
||||
@JsonKey(name: 'ugc_pay')
|
||||
int? ugcPay;
|
||||
String? author;
|
||||
bool? state;
|
||||
String? bvid;
|
||||
int? videos;
|
||||
@JsonKey(name: 'three_point')
|
||||
List<ThreePoint>? threePoint;
|
||||
@JsonKey(name: 'first_cid')
|
||||
int? firstCid;
|
||||
@JsonKey(name: 'cursor_attr')
|
||||
CursorAttr? cursorAttr;
|
||||
@JsonKey(name: 'view_content')
|
||||
String? viewContent;
|
||||
@JsonKey(name: 'icon_type')
|
||||
int? iconType;
|
||||
@JsonKey(name: 'publish_time_text')
|
||||
String? publishTimeText;
|
||||
List<Badge>? badges;
|
||||
|
||||
Item({
|
||||
this.title,
|
||||
this.subtitle,
|
||||
this.tname,
|
||||
this.cover,
|
||||
this.coverIcon,
|
||||
this.uri,
|
||||
this.param,
|
||||
this.goto,
|
||||
this.length,
|
||||
this.duration,
|
||||
this.isPopular,
|
||||
this.isSteins,
|
||||
this.isUgcpay,
|
||||
this.isCooperation,
|
||||
this.isPgc,
|
||||
this.isLivePlayback,
|
||||
this.isPugv,
|
||||
this.isFold,
|
||||
this.isOneself,
|
||||
this.play,
|
||||
this.danmaku,
|
||||
this.ctime,
|
||||
this.ugcPay,
|
||||
this.author,
|
||||
this.state,
|
||||
this.bvid,
|
||||
this.videos,
|
||||
this.threePoint,
|
||||
this.firstCid,
|
||||
this.cursorAttr,
|
||||
this.viewContent,
|
||||
this.iconType,
|
||||
this.publishTimeText,
|
||||
this.badges,
|
||||
});
|
||||
|
||||
factory Item.fromJson(Map<String, dynamic> json) => _$ItemFromJson(json);
|
||||
|
||||
Map<String, dynamic> toJson() => _$ItemToJson(this);
|
||||
}
|
||||
87
lib/models/space_archive/item.g.dart
Normal file
87
lib/models/space_archive/item.g.dart
Normal file
@@ -0,0 +1,87 @@
|
||||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
|
||||
part of 'item.dart';
|
||||
|
||||
// **************************************************************************
|
||||
// JsonSerializableGenerator
|
||||
// **************************************************************************
|
||||
|
||||
Item _$ItemFromJson(Map<String, dynamic> json) => Item(
|
||||
title: json['title'] as String?,
|
||||
subtitle: json['subtitle'] as String?,
|
||||
tname: json['tname'] as String?,
|
||||
cover: json['cover'] as String?,
|
||||
coverIcon: json['cover_icon'] as String?,
|
||||
uri: json['uri'] as String?,
|
||||
param: json['param'] as String?,
|
||||
goto: json['goto'] as String?,
|
||||
length: json['length'] as String?,
|
||||
duration: (json['duration'] as num?)?.toInt(),
|
||||
isPopular: json['is_popular'] as bool?,
|
||||
isSteins: json['is_steins'] as bool?,
|
||||
isUgcpay: json['is_ugcpay'] as bool?,
|
||||
isCooperation: json['is_cooperation'] as bool?,
|
||||
isPgc: json['is_pgc'] as bool?,
|
||||
isLivePlayback: json['is_live_playback'] as bool?,
|
||||
isPugv: json['is_pugv'] as bool?,
|
||||
isFold: json['is_fold'] as bool?,
|
||||
isOneself: json['is_oneself'] as bool?,
|
||||
play: (json['play'] as num?)?.toInt(),
|
||||
danmaku: (json['danmaku'] as num?)?.toInt(),
|
||||
ctime: (json['ctime'] as num?)?.toInt(),
|
||||
ugcPay: (json['ugc_pay'] as num?)?.toInt(),
|
||||
author: json['author'] as String?,
|
||||
state: json['state'] as bool?,
|
||||
bvid: json['bvid'] as String?,
|
||||
videos: (json['videos'] as num?)?.toInt(),
|
||||
threePoint: (json['three_point'] as List<dynamic>?)
|
||||
?.map((e) => ThreePoint.fromJson(e as Map<String, dynamic>))
|
||||
.toList(),
|
||||
firstCid: (json['first_cid'] as num?)?.toInt(),
|
||||
cursorAttr: json['cursor_attr'] == null
|
||||
? null
|
||||
: CursorAttr.fromJson(json['cursor_attr'] as Map<String, dynamic>),
|
||||
viewContent: json['view_content'] as String?,
|
||||
iconType: (json['icon_type'] as num?)?.toInt(),
|
||||
publishTimeText: json['publish_time_text'] as String?,
|
||||
badges: (json['badges'] as List<dynamic>?)
|
||||
?.map((e) => Badge.fromJson(e as Map<String, dynamic>))
|
||||
.toList(),
|
||||
);
|
||||
|
||||
Map<String, dynamic> _$ItemToJson(Item instance) => <String, dynamic>{
|
||||
'title': instance.title,
|
||||
'subtitle': instance.subtitle,
|
||||
'tname': instance.tname,
|
||||
'cover': instance.cover,
|
||||
'cover_icon': instance.coverIcon,
|
||||
'uri': instance.uri,
|
||||
'param': instance.param,
|
||||
'goto': instance.goto,
|
||||
'length': instance.length,
|
||||
'duration': instance.duration,
|
||||
'is_popular': instance.isPopular,
|
||||
'is_steins': instance.isSteins,
|
||||
'is_ugcpay': instance.isUgcpay,
|
||||
'is_cooperation': instance.isCooperation,
|
||||
'is_pgc': instance.isPgc,
|
||||
'is_live_playback': instance.isLivePlayback,
|
||||
'is_pugv': instance.isPugv,
|
||||
'is_fold': instance.isFold,
|
||||
'is_oneself': instance.isOneself,
|
||||
'play': instance.play,
|
||||
'danmaku': instance.danmaku,
|
||||
'ctime': instance.ctime,
|
||||
'ugc_pay': instance.ugcPay,
|
||||
'author': instance.author,
|
||||
'state': instance.state,
|
||||
'bvid': instance.bvid,
|
||||
'videos': instance.videos,
|
||||
'three_point': instance.threePoint,
|
||||
'first_cid': instance.firstCid,
|
||||
'cursor_attr': instance.cursorAttr,
|
||||
'view_content': instance.viewContent,
|
||||
'icon_type': instance.iconType,
|
||||
'publish_time_text': instance.publishTimeText,
|
||||
'badges': instance.badges,
|
||||
};
|
||||
24
lib/models/space_archive/last_watched_locator.dart
Normal file
24
lib/models/space_archive/last_watched_locator.dart
Normal file
@@ -0,0 +1,24 @@
|
||||
import 'package:json_annotation/json_annotation.dart';
|
||||
|
||||
part 'last_watched_locator.g.dart';
|
||||
|
||||
@JsonSerializable()
|
||||
class LastWatchedLocator {
|
||||
@JsonKey(name: 'display_threshold')
|
||||
int? displayThreshold;
|
||||
@JsonKey(name: 'insert_ranking')
|
||||
int? insertRanking;
|
||||
String? text;
|
||||
|
||||
LastWatchedLocator({
|
||||
this.displayThreshold,
|
||||
this.insertRanking,
|
||||
this.text,
|
||||
});
|
||||
|
||||
factory LastWatchedLocator.fromJson(Map<String, dynamic> json) {
|
||||
return _$LastWatchedLocatorFromJson(json);
|
||||
}
|
||||
|
||||
Map<String, dynamic> toJson() => _$LastWatchedLocatorToJson(this);
|
||||
}
|
||||
21
lib/models/space_archive/last_watched_locator.g.dart
Normal file
21
lib/models/space_archive/last_watched_locator.g.dart
Normal file
@@ -0,0 +1,21 @@
|
||||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
|
||||
part of 'last_watched_locator.dart';
|
||||
|
||||
// **************************************************************************
|
||||
// JsonSerializableGenerator
|
||||
// **************************************************************************
|
||||
|
||||
LastWatchedLocator _$LastWatchedLocatorFromJson(Map<String, dynamic> json) =>
|
||||
LastWatchedLocator(
|
||||
displayThreshold: (json['display_threshold'] as num?)?.toInt(),
|
||||
insertRanking: (json['insert_ranking'] as num?)?.toInt(),
|
||||
text: json['text'] as String?,
|
||||
);
|
||||
|
||||
Map<String, dynamic> _$LastWatchedLocatorToJson(LastWatchedLocator instance) =>
|
||||
<String, dynamic>{
|
||||
'display_threshold': instance.displayThreshold,
|
||||
'insert_ranking': instance.insertRanking,
|
||||
'text': instance.text,
|
||||
};
|
||||
15
lib/models/space_archive/order.dart
Normal file
15
lib/models/space_archive/order.dart
Normal file
@@ -0,0 +1,15 @@
|
||||
import 'package:json_annotation/json_annotation.dart';
|
||||
|
||||
part 'order.g.dart';
|
||||
|
||||
@JsonSerializable()
|
||||
class Order {
|
||||
String? title;
|
||||
String? value;
|
||||
|
||||
Order({this.title, this.value});
|
||||
|
||||
factory Order.fromJson(Map<String, dynamic> json) => _$OrderFromJson(json);
|
||||
|
||||
Map<String, dynamic> toJson() => _$OrderToJson(this);
|
||||
}
|
||||
17
lib/models/space_archive/order.g.dart
Normal file
17
lib/models/space_archive/order.g.dart
Normal file
@@ -0,0 +1,17 @@
|
||||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
|
||||
part of 'order.dart';
|
||||
|
||||
// **************************************************************************
|
||||
// JsonSerializableGenerator
|
||||
// **************************************************************************
|
||||
|
||||
Order _$OrderFromJson(Map<String, dynamic> json) => Order(
|
||||
title: json['title'] as String?,
|
||||
value: json['value'] as String?,
|
||||
);
|
||||
|
||||
Map<String, dynamic> _$OrderToJson(Order instance) => <String, dynamic>{
|
||||
'title': instance.title,
|
||||
'value': instance.value,
|
||||
};
|
||||
21
lib/models/space_archive/space_archive.dart
Normal file
21
lib/models/space_archive/space_archive.dart
Normal file
@@ -0,0 +1,21 @@
|
||||
import 'package:json_annotation/json_annotation.dart';
|
||||
|
||||
import 'data.dart';
|
||||
|
||||
part 'space_archive.g.dart';
|
||||
|
||||
@JsonSerializable()
|
||||
class SpaceArchive {
|
||||
int? code;
|
||||
String? message;
|
||||
int? ttl;
|
||||
Data? data;
|
||||
|
||||
SpaceArchive({this.code, this.message, this.ttl, this.data});
|
||||
|
||||
factory SpaceArchive.fromJson(Map<String, dynamic> json) {
|
||||
return _$SpaceArchiveFromJson(json);
|
||||
}
|
||||
|
||||
Map<String, dynamic> toJson() => _$SpaceArchiveToJson(this);
|
||||
}
|
||||
24
lib/models/space_archive/space_archive.g.dart
Normal file
24
lib/models/space_archive/space_archive.g.dart
Normal file
@@ -0,0 +1,24 @@
|
||||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
|
||||
part of 'space_archive.dart';
|
||||
|
||||
// **************************************************************************
|
||||
// JsonSerializableGenerator
|
||||
// **************************************************************************
|
||||
|
||||
SpaceArchive _$SpaceArchiveFromJson(Map<String, dynamic> json) => SpaceArchive(
|
||||
code: (json['code'] as num?)?.toInt(),
|
||||
message: json['message'] as String?,
|
||||
ttl: (json['ttl'] as num?)?.toInt(),
|
||||
data: json['data'] == null
|
||||
? null
|
||||
: Data.fromJson(json['data'] as Map<String, dynamic>),
|
||||
);
|
||||
|
||||
Map<String, dynamic> _$SpaceArchiveToJson(SpaceArchive instance) =>
|
||||
<String, dynamic>{
|
||||
'code': instance.code,
|
||||
'message': instance.message,
|
||||
'ttl': instance.ttl,
|
||||
'data': instance.data,
|
||||
};
|
||||
17
lib/models/space_archive/three_point.dart
Normal file
17
lib/models/space_archive/three_point.dart
Normal file
@@ -0,0 +1,17 @@
|
||||
class ThreePoint {
|
||||
ThreePoint({
|
||||
this.type,
|
||||
this.icon,
|
||||
this.text,
|
||||
});
|
||||
|
||||
String? type;
|
||||
String? icon;
|
||||
String? text;
|
||||
|
||||
ThreePoint.fromJson(Map<String, dynamic> json) {
|
||||
type = json['type'];
|
||||
icon = json['icon'];
|
||||
text = json['text'];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user