reason

增加获取配置setting接口

......@@ -24,7 +24,7 @@ Map<String, LibraryLoader> _deferredLibraries = {
'zh': () => new Future.value(null),
};
MessageLookupByLibrary _findExact(String localeName) {
MessageLookupByLibrary? _findExact(String localeName) {
switch (localeName) {
case 'en':
return messages_en.messages;
......@@ -58,9 +58,9 @@ bool _messagesExistFor(String locale) {
}
}
MessageLookupByLibrary _findGeneratedMessagesFor(String locale) {
var actualLocale = Intl.verifiedLocale(locale, _messagesExistFor,
onFailure: (_) => null);
MessageLookupByLibrary? _findGeneratedMessagesFor(String locale) {
var actualLocale =
Intl.verifiedLocale(locale, _messagesExistFor, onFailure: (_) => null);
if (actualLocale == null) return null;
return _findExact(actualLocale);
}
......
......@@ -7,7 +7,8 @@
// ignore_for_file:unnecessary_brace_in_string_interps, unnecessary_new
// ignore_for_file:prefer_single_quotes,comment_references, directives_ordering
// ignore_for_file:annotate_overrides,prefer_generic_function_type_aliases
// ignore_for_file:unused_import, file_names
// ignore_for_file:unused_import, file_names, avoid_escaping_inner_quotes
// ignore_for_file:unnecessary_string_interpolations, unnecessary_string_escapes
import 'package:intl/intl.dart';
import 'package:intl/message_lookup_by_library.dart';
......@@ -21,7 +22,7 @@ class MessageLookup extends MessageLookupByLibrary {
final messages = _notInlinedMessages(_notInlinedMessages);
static _notInlinedMessages(_) => <String, Function>{
static Map<String, Function> _notInlinedMessages(_) => <String, Function>{
"accountEditPageUserBirthday":
MessageLookupByLibrary.simpleMessage("Birthday"),
"accountEditPageUserBirthdayPlaceholder":
......
......@@ -7,7 +7,8 @@
// ignore_for_file:unnecessary_brace_in_string_interps, unnecessary_new
// ignore_for_file:prefer_single_quotes,comment_references, directives_ordering
// ignore_for_file:annotate_overrides,prefer_generic_function_type_aliases
// ignore_for_file:unused_import, file_names
// ignore_for_file:unused_import, file_names, avoid_escaping_inner_quotes
// ignore_for_file:unnecessary_string_interpolations, unnecessary_string_escapes
import 'package:intl/intl.dart';
import 'package:intl/message_lookup_by_library.dart';
......@@ -21,7 +22,7 @@ class MessageLookup extends MessageLookupByLibrary {
final messages = _notInlinedMessages(_notInlinedMessages);
static _notInlinedMessages(_) => <String, Function>{
static Map<String, Function> _notInlinedMessages(_) => <String, Function>{
"accountEditPageUserBirthday":
MessageLookupByLibrary.simpleMessage("出生日期"),
"accountEditPageUserBirthdayPlaceholder":
......
......@@ -7,6 +7,8 @@ import 'package:Parlando/account/models/user_entity.dart';
import 'package:Parlando/generated/json/user_entity.g.dart';
import 'package:Parlando/category/models/category_item_entity.dart';
import 'package:Parlando/generated/json/category_item_entity.g.dart';
import 'package:Parlando/home/models/setting_entity.dart';
import 'package:Parlando/generated/json/setting_entity.g.dart';
import 'package:Parlando/poem/models/lang_sort_entity.dart';
import 'package:Parlando/generated/json/lang_sort_entity.g.dart';
import 'package:Parlando/poem/models/search_entity.dart';
......@@ -81,24 +83,36 @@ class JsonConvert {
}
//Go back to a single instance by type
static M? _fromJsonSingle<M>(Map<String, dynamic> json) {
final String type = M.toString();
if(type == (UserEntity).toString()){
return UserEntity.fromJson(json) as M;
}
if(type == (CategoryItemEntity).toString()){
return CategoryItemEntity.fromJson(json) as M;
}
if(type == (LangSortEntity).toString()){
return LangSortEntity.fromJson(json) as M;
}
if(type == (SearchEntity).toString()){
return SearchEntity.fromJson(json) as M;
}
if(type == (SearchItems).toString()){
return SearchItems.fromJson(json) as M;
}
if(type == (SearchItemsOwner).toString()){
return SearchItemsOwner.fromJson(json) as M;
final String type = M.toString();
if (type == (UserEntity).toString()) {
return UserEntity.fromJson(json) as M;
}
if (type == (CategoryItemEntity).toString()) {
return CategoryItemEntity.fromJson(json) as M;
}
if (type == (SettingEntity).toString()) {
return SettingEntity.fromJson(json) as M;
}
if (type == (SettingData).toString()) {
return SettingData.fromJson(json) as M;
}
if (type == (SettingDataLoginSetting).toString()) {
return SettingDataLoginSetting.fromJson(json) as M;
}
if (type == (SettingError).toString()) {
return SettingError.fromJson(json) as M;
}
if (type == (LangSortEntity).toString()) {
return LangSortEntity.fromJson(json) as M;
}
if (type == (SearchEntity).toString()) {
return SearchEntity.fromJson(json) as M;
}
if (type == (SearchItems).toString()) {
return SearchItems.fromJson(json) as M;
}
if (type == (SearchItemsOwner).toString()) {
return SearchItemsOwner.fromJson(json) as M;
}
if(type == (SearchItemsLicense).toString()){
return SearchItemsLicense.fromJson(json) as M;
......@@ -117,23 +131,59 @@ class JsonConvert {
//list is returned by type
static M? _getListChildType<M>(List<Map<String, dynamic>> data) {
if(<UserEntity>[] is M){
return data.map<UserEntity>((Map<String, dynamic> e) => UserEntity.fromJson(e)).toList() as M;
}
if(<CategoryItemEntity>[] is M){
return data.map<CategoryItemEntity>((Map<String, dynamic> e) => CategoryItemEntity.fromJson(e)).toList() as M;
}
if(<LangSortEntity>[] is M){
return data.map<LangSortEntity>((Map<String, dynamic> e) => LangSortEntity.fromJson(e)).toList() as M;
}
if(<SearchEntity>[] is M){
return data.map<SearchEntity>((Map<String, dynamic> e) => SearchEntity.fromJson(e)).toList() as M;
}
if(<SearchItems>[] is M){
return data.map<SearchItems>((Map<String, dynamic> e) => SearchItems.fromJson(e)).toList() as M;
}
if(<SearchItemsOwner>[] is M){
return data.map<SearchItemsOwner>((Map<String, dynamic> e) => SearchItemsOwner.fromJson(e)).toList() as M;
if (<UserEntity>[] is M) {
return data
.map<UserEntity>((Map<String, dynamic> e) => UserEntity.fromJson(e))
.toList() as M;
}
if (<CategoryItemEntity>[] is M) {
return data
.map<CategoryItemEntity>(
(Map<String, dynamic> e) => CategoryItemEntity.fromJson(e))
.toList() as M;
}
if (<SettingEntity>[] is M) {
return data
.map<SettingEntity>(
(Map<String, dynamic> e) => SettingEntity.fromJson(e))
.toList() as M;
}
if (<SettingData>[] is M) {
return data
.map<SettingData>((Map<String, dynamic> e) => SettingData.fromJson(e))
.toList() as M;
}
if (<SettingDataLoginSetting>[] is M) {
return data
.map<SettingDataLoginSetting>(
(Map<String, dynamic> e) => SettingDataLoginSetting.fromJson(e))
.toList() as M;
}
if (<SettingError>[] is M) {
return data
.map<SettingError>(
(Map<String, dynamic> e) => SettingError.fromJson(e))
.toList() as M;
}
if (<LangSortEntity>[] is M) {
return data
.map<LangSortEntity>(
(Map<String, dynamic> e) => LangSortEntity.fromJson(e))
.toList() as M;
}
if (<SearchEntity>[] is M) {
return data
.map<SearchEntity>(
(Map<String, dynamic> e) => SearchEntity.fromJson(e))
.toList() as M;
}
if (<SearchItems>[] is M) {
return data
.map<SearchItems>((Map<String, dynamic> e) => SearchItems.fromJson(e))
.toList() as M;
}
if (<SearchItemsOwner>[] is M) {
return data.map<SearchItemsOwner>((Map<String, dynamic> e) => SearchItemsOwner.fromJson(e)).toList() as M;
}
if(<SearchItemsLicense>[] is M){
return data.map<SearchItemsLicense>((Map<String, dynamic> e) => SearchItemsLicense.fromJson(e)).toList() as M;
......
......@@ -11,17 +11,17 @@ CategoryItemEntity $CategoryItemEntityFromJson(Map<String, dynamic> json) {
if (timeLunar != null) {
categoryItemEntity.timeLunar = timeLunar;
}
final String? timeSolar = jsonConvert.convert<String>(json['time_solar']);
if (timeSolar != null) {
categoryItemEntity.timeSolar = timeSolar;
}
final String? period = jsonConvert.convert<String>(json['period']);
if (period != null) {
categoryItemEntity.period = period;
}
final String? poem = jsonConvert.convert<String>(json['poem']);
if (poem != null) {
categoryItemEntity.poem = poem;
final String? timeSolar = jsonConvert.convert<String>(json['time_solar']);
if (timeSolar != null) {
categoryItemEntity.timeSolar = timeSolar;
}
final String? period = jsonConvert.convert<String>(json['period']);
if (period != null) {
categoryItemEntity.period = period;
}
final String? poem = jsonConvert.convert<String>(json['poem']);
if (poem != null) {
categoryItemEntity.poem = poem;
}
final String? author = jsonConvert.convert<String>(json['author']);
if (author != null) {
......
......@@ -11,7 +11,7 @@ LangSortEntity $LangSortEntityFromJson(Map<String, dynamic> json) {
if (name != null) {
langSortEntity.name = name;
}
return langSortEntity;
return langSortEntity;
}
Map<String, dynamic> $LangSortEntityToJson(LangSortEntity entity) {
......
......@@ -12,11 +12,12 @@ SearchEntity $SearchEntityFromJson(Map<String, dynamic> json) {
if (incompleteResults != null) {
searchEntity.incompleteResults = incompleteResults;
}
final List<SearchItems>? items = jsonConvert.convertListNotNull<SearchItems>(json['items']);
if (items != null) {
searchEntity.items = items;
}
return searchEntity;
final List<SearchItems>? items =
jsonConvert.convertListNotNull<SearchItems>(json['items']);
if (items != null) {
searchEntity.items = items;
}
return searchEntity;
}
Map<String, dynamic> $SearchEntityToJson(SearchEntity entity) {
......
import 'package:Parlando/generated/json/base/json_convert_content.dart';
import 'package:Parlando/home/models/setting_entity.dart';
SettingEntity $SettingEntityFromJson(Map<String, dynamic> json) {
final SettingEntity settingEntity = SettingEntity();
final String? status = jsonConvert.convert<String>(json['status']);
if (status != null) {
settingEntity.status = status;
}
final int? code = jsonConvert.convert<int>(json['code']);
if (code != null) {
settingEntity.code = code;
}
final String? message = jsonConvert.convert<String>(json['message']);
if (message != null) {
settingEntity.message = message;
}
final SettingData? data = jsonConvert.convert<SettingData>(json['data']);
if (data != null) {
settingEntity.data = data;
}
final SettingError? error = jsonConvert.convert<SettingError>(json['error']);
if (error != null) {
settingEntity.error = error;
}
return settingEntity;
}
Map<String, dynamic> $SettingEntityToJson(SettingEntity entity) {
final Map<String, dynamic> data = <String, dynamic>{};
data['status'] = entity.status;
data['code'] = entity.code;
data['message'] = entity.message;
data['data'] = entity.data?.toJson();
data['error'] = entity.error?.toJson();
return data;
}
SettingData $SettingDataFromJson(Map<String, dynamic> json) {
final SettingData settingData = SettingData();
final List<SettingDataLoginSetting>? loginSetting = jsonConvert
.convertListNotNull<SettingDataLoginSetting>(json['login_setting']);
if (loginSetting != null) {
settingData.loginSetting = loginSetting;
}
return settingData;
}
Map<String, dynamic> $SettingDataToJson(SettingData entity) {
final Map<String, dynamic> data = <String, dynamic>{};
data['login_setting'] = entity.loginSetting?.map((v) => v.toJson()).toList();
return data;
}
SettingDataLoginSetting $SettingDataLoginSettingFromJson(
Map<String, dynamic> json) {
final SettingDataLoginSetting settingDataLoginSetting =
SettingDataLoginSetting();
final String? icon = jsonConvert.convert<String>(json['icon']);
if (icon != null) {
settingDataLoginSetting.icon = icon;
}
final String? name = jsonConvert.convert<String>(json['name']);
if (name != null) {
settingDataLoginSetting.name = name;
}
final int? state = jsonConvert.convert<int>(json['state']);
if (state != null) {
settingDataLoginSetting.state = state;
}
return settingDataLoginSetting;
}
Map<String, dynamic> $SettingDataLoginSettingToJson(
SettingDataLoginSetting entity) {
final Map<String, dynamic> data = <String, dynamic>{};
data['icon'] = entity.icon;
data['name'] = entity.name;
data['state'] = entity.state;
return data;
}
SettingError $SettingErrorFromJson(Map<String, dynamic> json) {
final SettingError settingError = SettingError();
return settingError;
}
Map<String, dynamic> $SettingErrorToJson(SettingError entity) {
final Map<String, dynamic> data = <String, dynamic>{};
return data;
}
......@@ -11,11 +11,11 @@ UserEntity $UserEntityFromJson(Map<String, dynamic> json) {
if (name != null) {
userEntity.name = name;
}
final String? avatar = jsonConvert.convert<String>(json['avatar']);
if (avatar != null) {
userEntity.avatar = avatar;
}
return userEntity;
final String? avatar = jsonConvert.convert<String>(json['avatar']);
if (avatar != null) {
userEntity.avatar = avatar;
}
return userEntity;
}
Map<String, dynamic> $UserEntityToJson(UserEntity entity) {
......
......@@ -10,12 +10,18 @@ import 'intl/messages_all.dart';
// ignore_for_file: non_constant_identifier_names, lines_longer_than_80_chars
// ignore_for_file: join_return_with_assignment, prefer_final_in_for_each
// ignore_for_file: avoid_redundant_argument_values
// ignore_for_file: avoid_redundant_argument_values, avoid_escaping_inner_quotes
class S {
S();
static S current;
static S? _current;
static S get current {
assert(_current != null,
'No instance of S was loaded. Try to initialize the S delegate before accessing S.current.');
return _current!;
}
static const AppLocalizationDelegate delegate = AppLocalizationDelegate();
......@@ -26,13 +32,21 @@ class S {
final localeName = Intl.canonicalizedLocale(name);
return initializeMessages(localeName).then((_) {
Intl.defaultLocale = localeName;
S.current = S();
final instance = S();
S._current = instance;
return S.current;
return instance;
});
}
static S of(BuildContext context) {
final instance = S.maybeOf(context);
assert(instance != null,
'No instance of S present in the widget tree. Did you add S.delegate in localizationsDelegates?');
return instance!;
}
static S? maybeOf(BuildContext context) {
return Localizations.of<S>(context, S);
}
......@@ -385,13 +399,11 @@ class AppLocalizationDelegate extends LocalizationsDelegate<S> {
bool shouldReload(AppLocalizationDelegate old) => false;
bool _isSupported(Locale locale) {
if (locale != null) {
for (var supportedLocale in supportedLocales) {
if (supportedLocale.languageCode == locale.languageCode) {
return true;
}
for (var supportedLocale in supportedLocales) {
if (supportedLocale.languageCode == locale.languageCode) {
return true;
}
}
return false;
}
}
\ No newline at end of file
}
......
import 'dart:convert';
import 'package:Parlando/generated/json/base/json_field.dart';
import 'package:Parlando/generated/json/setting_entity.g.dart';
@JsonSerializable()
class SettingEntity {
String? status;
int? code;
String? message;
SettingData? data;
SettingError? error;
SettingEntity();
factory SettingEntity.fromJson(Map<String, dynamic> json) =>
$SettingEntityFromJson(json);
Map<String, dynamic> toJson() => $SettingEntityToJson(this);
@override
String toString() {
return jsonEncode(this);
}
}
@JsonSerializable()
class SettingData {
@JSONField(name: "login_setting")
List<SettingDataLoginSetting>? loginSetting;
SettingData();
factory SettingData.fromJson(Map<String, dynamic> json) =>
$SettingDataFromJson(json);
Map<String, dynamic> toJson() => $SettingDataToJson(this);
@override
String toString() {
return jsonEncode(this);
}
}
@JsonSerializable()
class SettingDataLoginSetting {
String? icon;
String? name;
int? state;
SettingDataLoginSetting();
factory SettingDataLoginSetting.fromJson(Map<String, dynamic> json) =>
$SettingDataLoginSettingFromJson(json);
Map<String, dynamic> toJson() => $SettingDataLoginSettingToJson(this);
@override
String toString() {
return jsonEncode(this);
}
}
@JsonSerializable()
class SettingError {
SettingError();
factory SettingError.fromJson(Map<String, dynamic> json) =>
$SettingErrorFromJson(json);
Map<String, dynamic> toJson() => $SettingErrorToJson(this);
@override
String toString() {
return jsonEncode(this);
}
}
import 'dart:async';
import 'package:Parlando/home/models/setting_entity.dart';
import 'package:Parlando/net/dio_utils.dart';
import 'package:Parlando/net/http_api.dart';
import 'package:flutter/material.dart';
import 'package:flutter_swiper_null_safety/flutter_swiper_null_safety.dart';
import 'package:Parlando/extension/shared/size_fit.dart';
......@@ -72,6 +75,15 @@ class _SplashPageState extends State<SplashPage> {
}
void _initSplash() {
// 加载配置数据
DioUtils.instance.asyncRequestNetwork<SettingEntity>(
Method.get,
HttpApi.setting,
params: [],
onSuccess: (data) {},
onError: (code, msg) {},
);
_subscription =
Stream.value(1).delay(const Duration(milliseconds: 1500)).listen((_) {
if (SpUtil.getBool(Constant.keyGuide, defValue: true)! ||
......
......@@ -99,7 +99,7 @@ class MyApp extends StatelessWidget {
/// 适配数据(根据自己的数据结构,可自行选择添加)
interceptors.add(AdapterInterceptor());
configDio(
baseUrl: 'https://api.github.com/',
baseUrl: 'http://www.yiyan.pub/api/v1/',
interceptors: interceptors,
);
}
......
class HttpApi{
static const String users = 'users/simplezhli';
class HttpApi {
static const String setting = 'setting';
static const String search = 'search/repositories';
static const String subscriptions = 'users/simplezhli/subscriptions';
static const String upload = 'uuc/upload-inco';
......
......@@ -126,7 +126,7 @@ packages:
name: camera
url: "https://pub.flutter-io.cn"
source: hosted
version: "0.9.4+16"
version: "0.9.4+18"
camera_platform_interface:
dependency: transitive
description:
......@@ -301,7 +301,7 @@ packages:
name: dio
url: "https://pub.flutter-io.cn"
source: hosted
version: "4.0.4"
version: "4.0.5"
fake_async:
dependency: transitive
description:
......@@ -362,7 +362,7 @@ packages:
path: "."
ref: "597a0538"
resolved-ref: "597a05386700e1cf854ad9b56fe21b103c669f62"
url: "https://github.com/simplezhli/flutter_2d_amap.git"
url: "https://gitee.com/reasonpun/flutter_2d_amap.git"
source: git
version: "0.2.0+2"
flutter_blurhash:
......@@ -409,7 +409,7 @@ packages:
name: flutter_native_splash
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.1.1"
version: "2.1.2+1"
flutter_plugin_android_lifecycle:
dependency: transitive
description:
......@@ -975,7 +975,7 @@ packages:
name: shelf
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.2.0"
version: "1.3.0"
shelf_packages_handler:
dependency: transitive
description:
......@@ -1113,7 +1113,7 @@ packages:
name: synchronized
url: "https://pub.flutter-io.cn"
source: hosted
version: "3.0.0"
version: "3.0.0+2"
tapped:
dependency: "direct main"
description:
......@@ -1274,7 +1274,7 @@ packages:
name: video_player_android
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.3.1"
version: "2.3.2"
video_player_avfoundation:
dependency: transitive
description:
......@@ -1288,7 +1288,7 @@ packages:
name: video_player_platform_interface
url: "https://pub.flutter-io.cn"
source: hosted
version: "5.1.0"
version: "5.1.1"
video_player_web:
dependency: transitive
description:
......@@ -1365,7 +1365,7 @@ packages:
name: win32
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.4.1"
version: "2.5.0"
xdg_directories:
dependency: transitive
description:
......
......@@ -84,7 +84,7 @@ dependencies:
flutter_2d_amap:
git:
ref: '597a0538'
url: 'https://github.com/simplezhli/flutter_2d_amap.git'
url: 'https://gitee.com/reasonpun/flutter_2d_amap.git'
# tiktok
video_player: ^2.2.10
......