Commit 53120056 authored by 关振斌's avatar 关振斌

update: wxshare

parent acb9d7e1
{
"cSpell.words": [
"debouncetimer",
"roduct"
]
],
"vue.features.codeActions.enable": false
}
\ No newline at end of file
......@@ -47,7 +47,7 @@ PODS:
- FirebaseAuth (~> 10.7.0)
- Firebase/CoreOnly (10.7.0):
- FirebaseCore (= 10.7.0)
- firebase_auth (4.4.0):
- firebase_auth (4.4.1):
- Firebase/Auth (= 10.7.0)
- firebase_core
- Flutter
......@@ -79,6 +79,8 @@ PODS:
- OrderedSet (~> 5.0)
- flutter_keyboard_visibility (0.0.1):
- Flutter
- flutter_native_splash (0.0.1):
- Flutter
- flutter_tts (0.0.1):
- Flutter
- flutter_vibrate (0.0.1):
......@@ -88,6 +90,9 @@ PODS:
- fluttertoast (0.0.2):
- Flutter
- Toast
- fluwx (0.0.1):
- Flutter
- WechatOpenSDK-XCFramework (~> 2.0.2)
- FMDB (2.7.5):
- FMDB/standard (= 2.7.5)
- FMDB/standard (2.7.5)
......@@ -150,6 +155,7 @@ PODS:
- Flutter
- webview_flutter_wkwebview (0.0.1):
- Flutter
- WechatOpenSDK-XCFramework (2.0.2)
DEPENDENCIES:
- app_settings (from `.symlinks/plugins/app_settings/ios`)
......@@ -164,10 +170,12 @@ DEPENDENCIES:
- flutter_inapp_purchase (from `.symlinks/plugins/flutter_inapp_purchase/ios`)
- flutter_inappwebview (from `.symlinks/plugins/flutter_inappwebview/ios`)
- flutter_keyboard_visibility (from `.symlinks/plugins/flutter_keyboard_visibility/ios`)
- flutter_native_splash (from `.symlinks/plugins/flutter_native_splash/ios`)
- flutter_tts (from `.symlinks/plugins/flutter_tts/ios`)
- flutter_vibrate (from `.symlinks/plugins/flutter_vibrate/ios`)
- fluttercontactpicker (from `.symlinks/plugins/fluttercontactpicker/ios`)
- fluttertoast (from `.symlinks/plugins/fluttertoast/ios`)
- fluwx (from `.symlinks/plugins/fluwx/ios`)
- image_picker_ios (from `.symlinks/plugins/image_picker_ios/ios`)
- keyboard_utils (from `.symlinks/plugins/keyboard_utils/ios`)
- open_filex (from `.symlinks/plugins/open_filex/ios`)
......@@ -202,6 +210,7 @@ SPEC REPOS:
- SwiftyGif
- Toast
- Try
- WechatOpenSDK-XCFramework
EXTERNAL SOURCES:
app_settings:
......@@ -228,6 +237,8 @@ EXTERNAL SOURCES:
:path: ".symlinks/plugins/flutter_inappwebview/ios"
flutter_keyboard_visibility:
:path: ".symlinks/plugins/flutter_keyboard_visibility/ios"
flutter_native_splash:
:path: ".symlinks/plugins/flutter_native_splash/ios"
flutter_tts:
:path: ".symlinks/plugins/flutter_tts/ios"
flutter_vibrate:
......@@ -236,6 +247,8 @@ EXTERNAL SOURCES:
:path: ".symlinks/plugins/fluttercontactpicker/ios"
fluttertoast:
:path: ".symlinks/plugins/fluttertoast/ios"
fluwx:
:path: ".symlinks/plugins/fluwx/ios"
image_picker_ios:
:path: ".symlinks/plugins/image_picker_ios/ios"
keyboard_utils:
......@@ -276,7 +289,7 @@ SPEC CHECKSUMS:
DKPhotoGallery: fdfad5125a9fdda9cc57df834d49df790dbb4179
file_picker: ce3938a0df3cc1ef404671531facef740d03f920
Firebase: 0219acf760880eeec8ce479895bd7767466d9f81
firebase_auth: 5984ebaf5463319e304ab1c0966b06994bd1c69a
firebase_auth: 5a84572b7f5315a3aff5b07c62bb0cd5a28cade5
firebase_core: d85432877e814811e040e7659f9c82faeab66e04
FirebaseAuth: dd64c01631df724b09f33e584625775c52f7d71f
FirebaseCore: e317665b9d744727a97e623edbbed009320afdd7
......@@ -286,10 +299,12 @@ SPEC CHECKSUMS:
flutter_inapp_purchase: 5c6a1ac3f11b11d0c8c0321c0c41c1f05805e4c8
flutter_inappwebview: bfd58618f49dc62f2676de690fc6dcda1d6c3721
flutter_keyboard_visibility: 0339d06371254c3eb25eeb90ba8d17dca8f9c069
flutter_native_splash: 52501b97d1c0a5f898d687f1646226c1f93c56ef
flutter_tts: 0f492aab6accf87059b72354fcb4ba934304771d
flutter_vibrate: 9f4c2ab57008965f78969472367c329dd77eb801
fluttercontactpicker: d582836dea6b5d489f3d259f35d7817ae82ee5e6
fluttertoast: eb263d302cc92e04176c053d2385237e9f43fad0
fluwx: e9e728cfdb80e82dac5f4ff974b1901a7939dcd0
FMDB: 2ce00b547f966261cd18927a3ddb07cb6f3db82a
GoogleUtilities: 9aa0ad5a7bc171f8bae016300bfcfa3fb8425749
GTMSessionFetcher: c9e714f7eec91a55641e2bab9f45fd83a219b882
......@@ -315,6 +330,7 @@ SPEC CHECKSUMS:
vibration: 7d883d141656a1c1a6d8d238616b2042a51a1241
video_player_avfoundation: 81e49bb3d9fb63dccf9fa0f6d877dc3ddbeac126
webview_flutter_wkwebview: 2e2d318f21a5e036e2c3f26171342e95908bd60a
WechatOpenSDK-XCFramework: acdeeda129efbef9532bca8a10c24e1b4b8c7d69
PODFILE CHECKSUM: ef19549a9bc3046e7bb7d2fab4d021637c0c58a3
......
......@@ -3,7 +3,7 @@
archiveVersion = 1;
classes = {
};
objectVersion = 51;
objectVersion = 54;
objects = {
/* Begin PBXBuildFile section */
......@@ -205,6 +205,7 @@
/* Begin PBXShellScriptBuildPhase section */
3B06AD1E1E4923F5004D2608 /* Thin Binary */ = {
isa = PBXShellScriptBuildPhase;
alwaysOutOfDate = 1;
buildActionMask = 2147483647;
files = (
);
......@@ -241,6 +242,7 @@
};
9740EEB61CF901F6004384FC /* Run Script */ = {
isa = PBXShellScriptBuildPhase;
alwaysOutOfDate = 1;
buildActionMask = 2147483647;
files = (
);
......@@ -345,7 +347,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
SUPPORTED_PLATFORMS = iphoneos;
......@@ -364,7 +366,7 @@
CURRENT_PROJECT_VERSION = 2;
DEVELOPMENT_TEAM = Z99J24WADU;
ENABLE_BITCODE = NO;
FLUTTER_BUILD_NAME = 1.0.1;
FLUTTER_BUILD_NAME = 1.0.3;
INFOPLIST_FILE = Runner/Info.plist;
INFOPLIST_KEY_CFBundleDisplayName = "AI写作大师";
LD_RUNPATH_SEARCH_PATHS = (
......@@ -427,7 +429,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
......@@ -476,7 +478,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
SUPPORTED_PLATFORMS = iphoneos;
......@@ -497,7 +499,7 @@
CURRENT_PROJECT_VERSION = 2;
DEVELOPMENT_TEAM = Z99J24WADU;
ENABLE_BITCODE = NO;
FLUTTER_BUILD_NAME = 1.0.1;
FLUTTER_BUILD_NAME = 1.0.3;
INFOPLIST_FILE = Runner/Info.plist;
INFOPLIST_KEY_CFBundleDisplayName = "AI写作大师";
LD_RUNPATH_SEARCH_PATHS = (
......@@ -524,7 +526,7 @@
CURRENT_PROJECT_VERSION = 2;
DEVELOPMENT_TEAM = Z99J24WADU;
ENABLE_BITCODE = NO;
FLUTTER_BUILD_NAME = 1.0.1;
FLUTTER_BUILD_NAME = 1.0.3;
INFOPLIST_FILE = Runner/Info.plist;
INFOPLIST_KEY_CFBundleDisplayName = "AI写作大师";
LD_RUNPATH_SEARCH_PATHS = (
......
......@@ -31,6 +31,8 @@
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLName</key>
<string>wxac6457d4b052cc48</string>
<key>CFBundleURLSchemes</key>
<array/>
</dict>
......@@ -41,12 +43,21 @@
<array>
<string>weixin</string>
<string>weixinULAPI</string>
<string>weixinOpenSDK</string>
<string>weixinURLParamsAPI</string>
</array>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
<key>NSMicrophoneUsageDescription</key>
<string>只有您‘允许使用麦克风’AI写作大师才能听您说话</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>需要相册权限发送图片</string>
<key>NSSpeechRecognitionUsageDescription</key>
<string>只有您‘允许使用麦克风’AI写作大师才能听您说话</string>
<key>UIApplicationSupportsIndirectInputEvents</key>
<true/>
<key>UILaunchStoryboardName</key>
......@@ -66,11 +77,7 @@
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>NSMicrophoneUsageDescription</key>
<string>只有您‘允许使用麦克风’AI写作大师才能听您说话</string>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
<key>NSSpeechRecognitionUsageDescription</key>
<string>只有您‘允许使用麦克风’AI写作大师才能听您说话</string>
</dict>
</plist>
......@@ -5,6 +5,8 @@
<key>com.apple.developer.associated-domains</key>
<array>
<string>applinks:www.hahagpt.com/app/</string>
<string>applinks:order.1clickpass.com/app/</string>
<string>applinks:order.1clickpass.com</string>
</array>
</dict>
</plist>
......@@ -4,7 +4,9 @@
<dict>
<key>com.apple.developer.associated-domains</key>
<array>
<string>applinks:www.fusiontech.cn/</string>
<string>applinks:www.hahagpt.com/app/</string>
<string>applinks:order.1clickpass.com/app/</string>
<string>applinks:order.1clickpass.com</string>
</array>
</dict>
</plist>
......@@ -4,7 +4,9 @@
<dict>
<key>com.apple.developer.associated-domains</key>
<array>
<string>applinks:www.fusiontech.cn/</string>
<string>applinks:order.1clickpass.com/app/</string>
<string>applinks:www.hahagpt.com/app/</string>
<string>applinks:order.1clickpass.com</string>
</array>
</dict>
</plist>
......@@ -6,6 +6,7 @@ import 'package:chart/common/utils/utils.dart';
import '../../entity/login_entity.dart';
import '../../entity/user_entity.dart';
import '../entities/applePayList.dart';
/// 用户
class UserAPI {
......@@ -41,6 +42,16 @@ class UserAPI {
// UserLoginResponseEntity.fromJson(response);
}
static Future<ApplePayListEntity> applePayList() async {
var response = await HttpUtil().get(
'/goods/goodsListForIos',
);
// print(response + '1response');
return ApplePayListEntity.fromJson(response);
// UserLoginResponseEntity.fromJson(response);
}
// Future<ApplePayEntity>? applePayCallBack(Map<String, dynamic> parameters) {
// return HttpUtil.instance
// ?.post(AppUrls.applePayCallBack, parameters: parameters)
......@@ -194,12 +205,12 @@ class UserAPI {
}
static Future<SceneEntity> getSceneList() async {
try{
try {
var response = await HttpUtil().get(
'/scene/getSceneList',
);
return SceneEntity.fromJson(response);
}catch(e){
} catch (e) {
return Future.error(e);
}
......
import 'package:get/get.dart';
import 'package:chart/package/chat_dash/dash_chat_2.dart' as Chat;
import '../db/db_helper.dart';
class TaskController extends GetxController {
//this will hold the data and update the ui
@override
void onReady() {
getTasks();
super.onReady();
}
final taskList = <Chat.ChatMessage>[].obs;
// add data to table
Future<int> addTask({required Chat.ChatMessage chat}) async {
return await DBHelper.insert(chat);
}
// get all the data from table
void getTasks() async {
List<Map<String, dynamic>> chatList = await DBHelper.query();
taskList.assignAll(
chatList.map((data) => Chat.ChatMessage.fromJson(data)).toList());
}
// delete data from table
void deleteTask(Chat.ChatMessage chat) async {
await DBHelper.delete(chat);
getTasks();
}
// update data int table
void markTaskCompleted(int id) async {
await DBHelper.update(id);
getTasks();
}
}
import 'package:sqflite/sqflite.dart';
import 'package:chart/package/chat_dash/dash_chat_2.dart' as Chat;
//~/lib/controllers
class DBHelper {
static Database? _db;
static const int _version = 1;
static const String _tableName = 'tasks';
static Future<void> initDb() async {
if (_db != null) {
return;
}
try {
String _path = await getDatabasesPath() + 'tasks.db';
_db = await openDatabase(
_path,
version: _version,
onCreate: (db, version) {
return db.execute(
"CREATE TABLE $_tableName(id INTEGER PRIMARY KEY AUTOINCREMENT, title STRING, note TEXT, date STRING, startTime STRING, endTime STRING, remind INTEGER, repeat STRING, color INTEGER, isCompleted INTEGER)",
);
},
);
} catch (e) {
print(e);
}
}
static Future<int> insert(Chat.ChatMessage task) async {
print("insert function called");
return await _db!.insert(_tableName, task.toJson());
}
static Future<int> delete(Chat.ChatMessage task) async =>
await _db!.delete(_tableName, where: 'id = ?', whereArgs: [task.text]);
static Future<List<Map<String, dynamic>>> query() async {
print("query function called");
return _db!.query(_tableName);
}
static Future<int> update(int id) async {
print("update function called");
return await _db!.rawUpdate('''
UPDATE tasks
SET isCompleted = ?
WHERE id = ?
''', [1, id]);
}
}
class ApplePayListEntity {
int? status;
String? message;
List<PayListItem>? data;
int? timestamp;
ApplePayListEntity({this.status, this.message, this.data, this.timestamp});
ApplePayListEntity.fromJson(Map<String, dynamic> json) {
status = json['status'];
message = json['message'];
if (json['data'] != null) {
data = <PayListItem>[];
json['data'].forEach((v) {
data!.add(new PayListItem.fromJson(v));
});
}
timestamp = json['timestamp'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['status'] = this.status;
data['message'] = this.message;
if (this.data != null) {
data['data'] = this.data!.map((v) => v.toJson()).toList();
}
data['timestamp'] = this.timestamp;
return data;
}
}
class PayListItem {
int? id;
String? goodsName;
String? goodsDesc;
double? amount;
double? originalPrice;
int? integral;
String? createTime;
String? updateTime;
String? appleProductId;
int? isShelf;
int? goodsType;
int? count;
String? dayDesc;
PayListItem(
{this.id,
this.goodsName,
this.goodsDesc,
this.amount,
this.originalPrice,
this.integral,
this.createTime,
this.updateTime,
this.appleProductId,
this.isShelf,
this.goodsType,
this.count,
this.dayDesc});
PayListItem.fromJson(Map<String, dynamic> json) {
id = json['id'];
goodsName = json['goodsName'];
goodsDesc = json['goodsDesc'];
amount = json['amount'];
originalPrice = json['originalPrice'];
integral = json['integral'];
createTime = json['createTime'];
updateTime = json['updateTime'];
appleProductId = json['appleProductId'];
isShelf = json['isShelf'];
goodsType = json['goodsType'];
count = json['count'];
dayDesc = json['dayDesc'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['id'] = this.id;
data['goodsName'] = this.goodsName;
data['goodsDesc'] = this.goodsDesc;
data['amount'] = this.amount;
data['originalPrice'] = this.originalPrice;
data['integral'] = this.integral;
data['createTime'] = this.createTime;
data['updateTime'] = this.updateTime;
data['appleProductId'] = this.appleProductId;
data['isShelf'] = this.isShelf;
data['goodsType'] = this.goodsType;
data['count'] = this.count;
data['dayDesc'] = this.dayDesc;
return data;
}
}
......@@ -62,7 +62,7 @@ class UserStore extends GetxController {
} else {
ApplicationController.to.state.isNetWorkErr = false;
EasyLoading.dismiss();
await refreshInfo();
// await refreshInfo();
// Get.offAndToNamed(AppRoutes.Application);
// AppRoutes.WILL_COME
......@@ -73,7 +73,7 @@ class UserStore extends GetxController {
// Got a new connectivity status!
});
if (GetPlatform.isAndroid) {
if (GetPlatform.isAndroid || GetPlatform.isIOS) {
token = StorageService.to.getString(STORAGE_USER_TOKEN_KEY);
var profileOffline =
StorageService.to.getString(STORAGE_USER_PROFILE_KEY);
......@@ -110,41 +110,35 @@ class UserStore extends GetxController {
}
void logout() {
StorageService.to.remove(STORAGE_USER_TOKEN_KEY);
StorageService.to.remove(STORAGE_USER_PROFILE_KEY);
_profile.value = IntegralEntity(
id: '', token: '', username: '', integral: 0, expireTime: null);
_isLogin.value = false;
}
Future refreshInfo() async {
if (GetPlatform.isIOS) {
IosDeviceInfo iosInfo = await deviceInfo.iosInfo;
_profile.value = IntegralEntity(
id: '', token: '', username: '', integral: 0, expireTime: null);
_isLogin.value = false;
}
final res = await UserAPI.appleLogin({
"phone": iosInfo.data['identifierForVendor'],
});
Future refreshInfo() async {
if (GetPlatform.isIOS) {
IosDeviceInfo iosInfo = await deviceInfo.iosInfo;
final value = IntegralEntity(
expireTime: res.expireTime == null ? null : res.expireTime,
id: res.id,
token: res.token,
username: res.username,
integral: res.integral,
);
token = res.token;
_profile.value = _profile(value);
final res = await UserAPI.appleLogin({
"phone": iosInfo.data['identifierForVendor'],
});
if (profile.id != '') {
_isLogin.value = true;
}
final value = IntegralEntity(
expireTime: res.expireTime == null ? null : res.expireTime,
id: res.id,
token: res.token,
username: res.username,
integral: res.integral,
);
token = res.token;
_profile.value = _profile(value);
// await MainController.to.asyncLoadBannerData();
if (profile.id != '') {
_isLogin.value = true;
}
}
handleLogin(IntegralEntity res) async {
await setToken(res.token);
// IntegralEntity userInfo = await UserAPI.getUserIntegral();
await getUserInfo(IntegralEntity(
......@@ -156,77 +150,93 @@ class UserStore extends GetxController {
));
_isLogin.value = true;
Get.back();
// Get.put(ApplicationController());
// Get.offAndToNamed(AppRoutes.Application);
// await MainController.to.asyncLoadBannerData();
}
}
getUserInfo(IntegralEntity userInfo) async {
await setToken(userInfo.token);
handleLogin(IntegralEntity res) async {
await setToken(res.token);
// IntegralEntity userInfo = await UserAPI.getUserIntegral();
await getUserInfo(IntegralEntity(
id: res.id,
username: res.username,
token: res.token,
integral: res.integral,
expireTime: res.expireTime,
));
_isLogin.value = true;
Get.back();
// Get.put(ApplicationController());
// Get.offAndToNamed(AppRoutes.Application);
}
await saveProfile(userInfo);
getUserInfo(IntegralEntity userInfo) async {
await setToken(userInfo.token);
// token = StorageService.to.getString(STORAGE_USER_TOKEN_KEY);
await saveProfile(userInfo);
// if (token.isNotEmpty) {
// return;
// }
// IntegralEntity userInfo = await UserAPI.getUserIntegral();
// token = StorageService.to.getString(STORAGE_USER_TOKEN_KEY);
// print("$userInfo");
// if (token.isNotEmpty) {
// return;
// }
// IntegralEntity userInfo = await UserAPI.getUserIntegral();
// var info = await UserAPI.getUserIntegral();
// if (token.isEmpty) {
// print("$userInfo");
// }
}
// var info = await UserAPI.getUserIntegral();
// if (token.isEmpty) {
@override
dispose() {
subscription?.cancel();
super.dispose();
}
// }
}
// 保存 token
Future<void> setToken(String value) async {
await StorageService.to.setString(STORAGE_USER_TOKEN_KEY, value);
token = value;
}
@override
dispose() {
subscription?.cancel();
super.dispose();
}
// 获取 profile
Future<void> getProfile() async {
// print("objectobjectobjectobjectobjectobject");
// if (token.isEmpty) return;
// var result = await UserAPI.profile();
// _profile(result);
// _isLogin.value = true;
// StorageService.to.setString(STORAGE_USER_PROFILE_KEY, jsonEncode(result));
}
// 保存 token
Future<void> setToken(String value) async {
await StorageService.to.setString(STORAGE_USER_TOKEN_KEY, value);
token = value;
}
// 保存 profile
Future<void> saveProfile(IntegralEntity profile) async {
_profile.value = profile;
var copiedMap = Map.from(profile.toMap());
// 获取 profile
Future<void> getProfile() async {
// print("objectobjectobjectobjectobjectobject");
// if (token.isEmpty) return;
// var result = await UserAPI.profile();
// _profile(result);
// _isLogin.value = true;
// StorageService.to.setString(STORAGE_USER_PROFILE_KEY, jsonEncode(result));
}
copiedMap.update("expireTime", (value) => value?.toIso8601String());
// 保存 profile
Future<void> saveProfile(IntegralEntity profile) async {
_profile.value = profile;
var copiedMap = Map.from(profile.toMap());
StorageService.to
.setString(STORAGE_USER_PROFILE_KEY, jsonEncode(copiedMap));
}
copiedMap.update("expireTime", (value) => value?.toIso8601String());
// // 保存 profile
// Future<void> saveProfile(UserLoginResponseEntity profile) async {
// _isLogin.value = true;
// StorageService.to.setString(STORAGE_USER_PROFILE_KEY, jsonEncode(profile));
// }
StorageService.to
.setString(STORAGE_USER_PROFILE_KEY, jsonEncode(copiedMap));
}
// 注销
Future<void> onLogout() async {
// if (_isLogin.value) await UserAPI.logout();
await StorageService.to.remove(STORAGE_USER_TOKEN_KEY);
_isLogin.value = false;
token = '';
saveProfile(IntegralEntity(
id: '', username: '', token: '', expireTime: null, integral: 0));
Get.toNamed(AppRoutes.Application);
// // 保存 profile
// Future<void> saveProfile(UserLoginResponseEntity profile) async {
// _isLogin.value = true;
// StorageService.to.setString(STORAGE_USER_PROFILE_KEY, jsonEncode(profile));
// }
// 注销
Future<void> onLogout() async {
// if (_isLogin.value) await UserAPI.logout();
await StorageService.to.remove(STORAGE_USER_TOKEN_KEY);
_isLogin.value = false;
token = '';
saveProfile(IntegralEntity(
id: '', username: '', token: '', expireTime: null, integral: 0));
Get.toNamed(AppRoutes.Application);
}
}
......@@ -17,7 +17,7 @@ class Loading {
..maskColor = Colors.black.withOpacity(0.6)
..userInteractions = true
..dismissOnTap = false
..maskType = EasyLoadingMaskType.custom;
..maskType = EasyLoadingMaskType.black;
}
static void show([String? text]) {
......
......@@ -2,7 +2,8 @@
// const SERVER_API_URL = 'https://yapi.baidu.com/mock/41008';
// const SERVER_API_URL = 'http://192.168.120.175:8083/api';
const SERVER_API_URL = 'http://101.34.153.228:8083/api';//线上
// const SERVER_API_URL = 'http://192.168.110.12:8083/api';//线上
//http://192.168.110.12:8083/api/doc.html
// const SERVER_API_URL = 'http://192.168.121.180:8083/api';//线上
//http://192.168.2.178:8083/api/doc.html
// const SERVER_API_URL = "http://192.168.120.108:8083/api";
......
import 'dart:io';
import 'package:flutter_native_splash/flutter_native_splash.dart';
import 'package:chart/pages/frame/product/bindings.dart';
import 'package:chart/pages/home/index.dart';
import 'package:flutter/material.dart';
......@@ -19,6 +19,8 @@ import 'package:glassy/glassy_config.dart';
import 'package:pull_to_refresh/pull_to_refresh.dart';
void main() async {
// WidgetsBinding widgetsBinding = WidgetsFlutterBinding.ensureInitialized();
// FlutterNativeSplash.preserve(widgetsBinding: widgetsBinding);
await Global.init();
Glassy().setConfig(GlassyConfig(
radius: 16,
......@@ -28,9 +30,9 @@ void main() async {
runApp(ChatApp());
/// Android的一些全局配置項
if(Platform.isAndroid) {
if (Platform.isAndroid) {
var systemUiOverlayStyle =
const SystemUiOverlayStyle(systemNavigationBarColor: Colors.black);
const SystemUiOverlayStyle(systemNavigationBarColor: Colors.black);
SystemChrome.setSystemUIOverlayStyle(systemUiOverlayStyle);
}
}
......
......@@ -136,66 +136,70 @@ class _MessageListState extends State<MessageList> {
final bool isPlaceHolder = message.user.id == '0';
if (isPlaceHolder) {
//
return InkWell(
onTap: () {
scrollController.animateTo(
0.0,
duration: const Duration(milliseconds: 300),
curve: Curves.easeInOut,
);
widget.messageOptions.onPressMessage!(message);
},
child: Container(
margin: const EdgeInsets.only(
left: 10, right: 10, bottom: 20),
child: Column(
children: [
Row(
children: [
Icon(
Icons.timelapse_sharp,
color: Color.fromARGB(255, 117, 194, 245),
),
SizedBox(width: 10),
Text(message.customProperties!['title']),
],
),
Container(
padding: const EdgeInsets.symmetric(
vertical: 15, horizontal: 20),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10),
gradient: const LinearGradient(
colors: [
Color(0xFF3d3f54),
Color(0xFF333450),
Color(0xFF2b2b4d)
],
begin: Alignment.topCenter,
end: Alignment.bottomCenter,
)),
margin: const EdgeInsets.only(top: 20),
child: Row(
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
children: [
Expanded(
child: Text(
message.text,
overflow: TextOverflow.ellipsis,
maxLines: 1,
style: const TextStyle(
color: Color.fromARGB(
255, 170, 170, 194)),
)),
const Icon(
Icons.arrow_forward,
color: Color(0xFF9c67f6),
),
]),
),
],
),
return Container(
margin: const EdgeInsets.only(
left: 10, right: 10, bottom: 20),
child: Column(
children: [
Row(
children: [
Icon(
Icons.timelapse_sharp,
color: Color.fromARGB(255, 117, 194, 245),
),
SizedBox(width: 10),
Text(message.customProperties!['title']),
],
),
Container(
margin: const EdgeInsets.only(top: 20),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10),
gradient: const LinearGradient(
colors: [
Color(0xFF3d3f54),
Color(0xFF333450),
Color(0xFF2b2b4d)
],
begin: Alignment.topCenter,
end: Alignment.bottomCenter,
)),
child: InkWell(
borderRadius: BorderRadius.circular(10),
onTap: () {
scrollController.animateTo(
0.0,
duration:
const Duration(milliseconds: 300),
curve: Curves.easeInOut,
);
widget.messageOptions
.onPressMessage!(message);
},
child: Ink(
padding: const EdgeInsets.symmetric(
vertical: 15, horizontal: 20),
child: Row(
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
children: [
Expanded(
child: Text(
message.text,
overflow: TextOverflow.ellipsis,
maxLines: 1,
style: const TextStyle(
color: Color.fromARGB(
255, 170, 170, 194)),
)),
const Icon(
Icons.arrow_forward,
color: Color(0xFF9c67f6),
),
]),
)),
),
],
),
);
}
......
......@@ -114,7 +114,7 @@ class ApplicationController extends GetxController {
// tab栏动画
void handleNavBarTap(int index) async {
Vibrate.feedback(FeedbackType.impact);
if (! await _canHandleNavBar(index)) {
if (!await _canHandleNavBar(index)) {
return;
} else {
try {
......@@ -127,7 +127,7 @@ class ApplicationController extends GetxController {
}
// 判断是否能够跳转至私人助理页面
Future<bool> _canHandleNavBar(int index,{bool autoChange = true}) async {
Future<bool> _canHandleNavBar(int index, {bool autoChange = true}) async {
///私人助手index
int asssitIndex = 2;
// android平台私人助理页需要登录才可以查看
......@@ -226,7 +226,7 @@ class ApplicationController extends GetxController {
icon: Image(image: AssetImage("assets/images/home.png"), width: 30.0),
activeIcon: Image(
image: AssetImage("assets/images/home-selected.png"), width: 30.0),
label: '百晓通',
label: 'AI聊天',
backgroundColor: AppColors.primaryBackground,
),
const BottomNavigationBarItem(
......
......@@ -4,9 +4,11 @@ import 'package:chart/common/apis/user.dart';
import 'package:chart/common/store/store.dart';
import 'package:chart/package/chat_dash/dash_chat_2.dart';
import 'package:flutter_client_sse/flutter_client_sse.dart';
import 'package:flutter_easyloading/flutter_easyloading.dart';
import 'package:flutter_vibrate/flutter_vibrate.dart';
import 'package:get/get.dart';
import 'package:chart/package/chat_dash/dash_chat_2.dart' as Chat;
import '../../common/routers/names.dart';
import '../../common/values/values.dart';
import 'index.dart';
......@@ -72,12 +74,19 @@ class AssistantItemController extends GetxController {
try {
await initEventSource();
state.isLoading = true;
await UserAPI.sceneConversion({
int res = await UserAPI.sceneConversion({
"conversionId": state.actId,
"question": message.text,
"sceneId": state.selectItem['sceneId'],
});
if (res == 401) {
_updateMessage('请登录后体验功能!');
state.isLoading = false;
EasyLoading.showInfo('您还为登录,请登录后体验功能。');
Get.toNamed(AppRoutes.SIGN_IN);
}
} catch (e) {
_updateMessage('服务器异常');
state.isLoading = false;
}
......
......@@ -15,6 +15,16 @@ class GridWidget extends GetView<AssistantController> {
@override
Widget build(BuildContext context) {
return Obx(() => SmartRefresher(
header: ClassicHeader(
releaseText: "松开刷新",
refreshingText: "刷新数据中",
completeText: "刷新数据成功",
idleText: "下拉刷新"),
footer: ClassicFooter(
loadingText: "正在加载中...",
// loadStyle: LoadStyle.ShowWhenLoading,
// completeDuration: Duration(milliseconds: 500),
noDataText: '没有更多数据啦'),
enablePullDown: controller.enablePullDown.value,
enablePullUp: controller.enablePullUp.value,
onRefresh: controller.onRefresh,
......@@ -155,8 +165,7 @@ class GridWidget extends GetView<AssistantController> {
increaseHeightBy: -5.00,
increaseWidthBy: -10.00,
callback: () {
controller
.onTap(element);
controller.onTap(element);
},
// controller.requestPurchase,
gradient:
......@@ -185,10 +194,8 @@ class GridWidget extends GetView<AssistantController> {
Text("${element.sceneDesc}",
maxLines: 2,
textAlign: TextAlign.left,
overflow:
TextOverflow.ellipsis,
style:
TextStyle(fontSize: 10))
overflow: TextOverflow.ellipsis,
style: TextStyle(fontSize: 10))
]),
),
)
......
......@@ -2,6 +2,7 @@ import 'dart:convert';
import 'package:chart/common/apis/apis.dart';
import 'package:chart/common/entities/detail.dart';
import 'package:chart/common/routers/names.dart';
import 'package:chart/common/store/user.dart';
import 'package:chart/common/values/server.dart';
import 'package:clipboard/clipboard.dart';
......@@ -74,11 +75,19 @@ class CreationDetailController extends GetxController {
EasyLoading.show(status: "AI正在生成中...");
try {
state.isLoading = true;
await NewsAPI.sendMessageByDetailId(state.detailList.value, state.id);
final res = await NewsAPI.sendMessageByDetailId(
state.detailList.value, state.id);
if (state.genText.isNotEmpty) {
state.genText = '';
}
if (res == 401) {
state.genText = '您还为登录,请登录后体验功能。';
EasyLoading.showInfo('您还为登录,请登录后体验功能。');
Get.toNamed(AppRoutes.SIGN_IN);
state.isLoading = false;
}
// state.isLoading = false;
} catch (e) {
state.isLoading = false;
......@@ -94,7 +103,6 @@ class CreationDetailController extends GetxController {
sse = SSEClient.subscribeToSSE(
url: "$SERVER_API_URL/openAi/connect/${UserStore.to.profile.id}",
header: {}).listen((event) async {
print('$event 1213213131');
if (event.data!.trim().isEmpty) {
return;
} else if (event.id == "[DONE]") {
......
......@@ -285,18 +285,9 @@ class HelloWidget extends GetView<CreationDetailController> {
increaseWidthBy: Get.width * .7,
callback: controller.genInner,
shapeRadius: const BorderRadius.all(Radius.circular(5)),
// controller.requestPurchase,
// gradient: Gradients.cosmicFusion,
// background-image: linear-gradient(180deg, #3d3f54, #333450, #2b2b4d);
elevation: 0,
gradient: const LinearGradient(
colors: [
// 61, 63, 84
// 180deg,
// #be6afb,
// #9c67f6,
// #7965f8
Color(0xFFbe6afb),
Color(0xFF9c67f6),
Color(0xFF7965f8)
......
......@@ -223,13 +223,23 @@ class GridWidget extends GetView<CreationController> {
// )
],
);
return Obx(() => SmartRefresher(
enablePullDown: controller.enablePullDown.value,
enablePullUp: controller.enablePullUp.value,
onRefresh: controller.onRefresh,
controller: controller.refreshController,
child: customScrollView,
));
return Obx(() => SmartRefresher(
header: ClassicHeader(
releaseText: "松开刷新",
refreshingText: "刷新数据中",
completeText: "刷新数据成功",
idleText: "下拉刷新"),
footer: ClassicFooter(
loadingText: "正在加载中...",
// loadStyle: LoadStyle.ShowWhenLoading,
// completeDuration: Duration(milliseconds: 500),
noDataText: '没有更多数据啦'),
enablePullDown: controller.enablePullDown.value,
enablePullUp: controller.enablePullUp.value,
onRefresh: controller.onRefresh,
controller: controller.refreshController,
child: customScrollView,
));
// return Container(
// alignment: Alignment.center,
......
......@@ -49,6 +49,7 @@ class UserEulaPage extends GetView<UserEulaController> {
builder: (_) {
return Scaffold(
appBar: AppBar(
backgroundColor: Color.fromARGB(255, 30, 34, 61),
leading: IconButton(
tooltip: '返回上一页',
icon: const Icon(
......
......@@ -50,14 +50,12 @@ class AndroidPayListController extends GetxController {
super.onInit();
try {
await initializedPlugins();
EasyLoading.show(status: "正在获取套餐中...");
await _getProduct();
state.loadingList = false;
EasyLoading.dismiss();
} catch(e){
} catch (e) {
state.loadingList = false;
}
......@@ -117,10 +115,11 @@ class AndroidPayListController extends GetxController {
try {
List<GoodEntity> goodsList = await NewsAPI.getGoodsList();
final list = goodsList.reversed;
// print(goodsList);
state.items.addAll(goodsList);
state.items.addAll(list);
EasyLoading.dismiss();
if(goodsList.isNotEmpty) {
if (goodsList.isNotEmpty) {
state.setSelectedItem = goodsList.first;
}
} catch (e) {
......
......@@ -68,7 +68,7 @@ class PayItemWidget extends GetView<AndroidPayListController> {
text:
" ${c.profile.expireTime.year}-${c.profile.expireTime.month}-${c.profile.expireTime.day} "),
const TextSpan(
text: '过期,如果您是自动续费会员将会在过期日前一天自动续费。',
text: '过期',
style: TextStyle(
color: Color.fromARGB(255, 160, 165, 184),
fontSize: 14,
......
......@@ -20,10 +20,13 @@ class PayListController extends GetxController {
final state = PayListState();
final List<String> _productLists = [
"com.wudi.app.prod_id_10",
"com.wudi.app.prod_id_6",
"com.wudi.monthly_pass.chat",
"com.wudi.chat.week_pass",
"com.wudi.monthly_pass_chat_subscription",
"com.wudi.quarterly_pass_chat_subscription",
// "com.wudi.chat.halfyear_pass",
"com.wudi.chat.halfyear_pass",
"com.wudi.yearly_pass_chat"
];
......@@ -98,9 +101,9 @@ class PayListController extends GetxController {
if (res?.status == 200) {
state.loading = false;
EasyLoading.showSuccess(res.message);
Vibrate.feedback(FeedbackType.success);
EasyLoading.dismiss();
EasyLoading.showSuccess(res.message);
UserAPI.getUserInfo().then((value) async {
await UserStore.to.saveProfile(IntegralEntity(
id: UserStore.to.profile.id,
......@@ -133,18 +136,18 @@ class PayListController extends GetxController {
await FlutterInappPurchase.instance.clearTransactionIOS();
EasyLoading.showError("${res?.message}}");
state.loading = false;
EasyLoading.dismiss();
Get.back();
Vibrate.feedback(FeedbackType.error);
}
});
_purchaseErrorSubscription =
FlutterInappPurchase.purchaseError.listen((purchaseError) {
// print('purchase-error: $purchaseError');
Vibrate.feedback(FeedbackType.error);
EasyLoading.showError('支付订单失败');
EasyLoading.dismiss();
Get.back();
state.loading = false;
EasyLoading.showError('支付订单失败');
});
}
......@@ -177,13 +180,11 @@ class PayListController extends GetxController {
try {
List<IAPItem> items =
await FlutterInappPurchase.instance.getProducts(_productLists);
state.items.addAll(items);
final reversedItems = items.reversed;
state.items.addAll(reversedItems);
// for (var item in items) {
// // print('${item.toString()}');
// // this._items.add(item);
// state.items.add(item);
// }
} catch (e) {
print("_getProductError$e");
}
......@@ -193,7 +194,7 @@ class PayListController extends GetxController {
state.loading = true;
Vibrate.feedback(FeedbackType.selection);
// print("${item.productId}");
EasyLoading.show(status: '支付中...');
// EasyLoading.show(status: '支付中...');
// IAPItem item
FlutterInappPurchase.instance.requestPurchase(state.selected);
}
......
......@@ -7,7 +7,7 @@ class PayListState {
set title(value) => this._title.value = value;
get title => this._title.value;
final _selected = "com.wudi.yearly_pass_chat".obs;
final _selected = "com.wudi.app.prod_id_10".obs;
set selected(value) => _selected.value = value;
get selected => _selected.value;
......
......@@ -3,6 +3,7 @@ import 'dart:math';
import 'package:card_swiper/card_swiper.dart';
import 'package:chart/common/routers/names.dart';
import 'package:chart/common/store/user.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_vibrate/flutter_vibrate.dart';
import 'package:get/get.dart';
......@@ -199,7 +200,7 @@ class PayItemWidget extends GetView<PayListController> {
Obx(
() => Container(
width: Get.width,
height: 140,
height: 160,
margin: EdgeInsets.all(10),
child: ListView(
// This next line does the trick.
......@@ -217,10 +218,12 @@ class PayItemWidget extends GetView<PayListController> {
controller.state.selected = element.productId!;
},
child: Ink(
width: 120,
padding: EdgeInsets.symmetric(
horizontal: 15, vertical: 20),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10),
// border: ,Color.argb(255, 62, 67, 95)
border: Border.all(
width: 1,
......@@ -252,6 +255,7 @@ class PayItemWidget extends GetView<PayListController> {
children: [
Text(
element.title!,
textAlign: TextAlign.center,
style: TextStyle(
fontWeight: FontWeight.bold,
color: controller.state.selected ==
......@@ -563,6 +567,30 @@ class PayItemWidget extends GetView<PayListController> {
increaseHeightBy: 10.00,
increaseWidthBy: Get.width * .7,
callback: () {
showDialog(
context: context,
barrierDismissible: false,
builder: (BuildContext context) {
return Center(
child: Container(
width: 120,
height: 120,
decoration: BoxDecoration(
color: Colors.black.withAlpha(135),
borderRadius: BorderRadius.circular(10),
),
child: Column(
mainAxisAlignment:
MainAxisAlignment.spaceEvenly,
children: [
CupertinoActivityIndicator(radius: 16.00),
Text("支付中...")
],
)),
);
},
);
controller.requestPurchase();
},
isEnabled: !controller.state.loading,
......
import 'dart:async';
import 'dart:io';
import 'package:device_info_plus/device_info_plus.dart';
import 'package:flutter_vibrate/flutter_vibrate.dart';
import 'package:sign_in_with_apple/sign_in_with_apple.dart';
import 'package:flutter/material.dart';
......@@ -11,8 +12,9 @@ import 'package:chart/common/utils/utils.dart';
import 'package:chart/common/widgets/widgets.dart';
import 'package:flutter_easyloading/flutter_easyloading.dart';
import 'package:social_login_buttons/social_login_buttons.dart';
import 'package:connectivity_plus/connectivity_plus.dart';
import 'package:device_info_plus/device_info_plus.dart';
import 'package:get/get.dart';
// import 'package:fluwx/fluwx.dart';
import '../../../entity/login_entity.dart';
import '../../../entity/user_entity.dart';
......@@ -22,13 +24,14 @@ class SignInController extends GetxController {
final state = SignInState();
SignInController();
DeviceInfoPlugin deviceInfo = DeviceInfoPlugin();
RxBool showClear = false.obs;
RxBool codeEnable = false.obs;
RxBool checkBox = false.obs;
RxBool loginBtnEable = false.obs;
RxString codeTileStr = "获取验证码".obs;
final smsLoading = false.obs;
// 隐私政策是否勾选
RxBool privactChecked = false.obs;
......@@ -72,10 +75,10 @@ class SignInController extends GetxController {
// 执行登录操作
handleSignIn() async {
if (Platform.isAndroid && privactChecked == false) {
EasyLoading.showToast("请阅读并同意《用户协议》《隐私政策》");
return;
}
// if (Platform.isAndroid && privactChecked == false) {
// EasyLoading.showToast("请阅读并同意《用户协议》《隐私政策》");
// return;
// }
if (!GetUtils.isPhoneNumber(mobileMemberController.text)) {
EasyLoading.showToast("请输入手机号");
return;
......@@ -154,6 +157,43 @@ class SignInController extends GetxController {
// }
}
handleTouristsLogin() async {
EasyLoading.show(status: '登录中...');
// Map<String, dynamic> routeParams =
// ModalRoute.of(context)!.settings?.arguments as Map<String, dynamic>;
// final DateTime expireTime;
// final int integral;
try {
IosDeviceInfo iosInfo = await deviceInfo.iosInfo;
final res = await UserAPI.appleLogin({
"phone": iosInfo.data['identifierForVendor'],
});
// LoginEntity? res = await UserAPI.login({
// "smsCode": codeController.text,
// "phone": mobileMemberController.text,
// // "id": UserStore.to.profile.id,
// });
Vibrate.feedback(FeedbackType.success);
EasyLoading.showSuccess("登录成功");
EasyLoading.dismiss();
UserStore.to.handleLogin(IntegralEntity(
id: res.id,
username: res.username,
token: res.token,
expireTime: res.expireTime,
integral: res.integral));
// appLogin
} catch (e) {
Vibrate.feedback(FeedbackType.error);
EasyLoading.showError("登录失败");
EasyLoading.dismiss();
}
}
setLoginBtnStatus() {
if (mobileMemberController.text.length >= 3) {
loginBtnEable.value = true;
......@@ -184,46 +224,63 @@ class SignInController extends GetxController {
_cancelTimer();
_seconds = 60;
verifyStr.value = '重新发送';
codeEnable.value = true;
codeEnable.value = false;
codeTileStr.value = "重新发送验证码";
return;
} else {
verifyStr.value = '已发送$_seconds' + 's';
codeTileStr.value = "${_seconds}s后重试";
codeEnable.value = true;
_seconds--;
}
verifyStr.value = '已发送$_seconds' + 's';
codeTileStr.value = "${_seconds}s后重试";
codeEnable.value = false;
_seconds--;
});
}
chageCodeStatus() async {
if (!mobileMemberController.text.isNotEmpty) {
EasyLoading.showToast('请先输入手机号');
return;
}
if (codeEnable.value == false) {
EasyLoading.show(status: "验证码发送太过频繁,请稍后再试");
return;
sendSms() async {
try {
startTimer();
await UserAPI.sendSms({"phone": mobileMemberController.text});
Get.back();
EasyLoading.showToast('验证码发送成功,请注意查收',
maskType: EasyLoadingMaskType.none);
} catch (e) {
} finally {
smsLoading.value = false;
}
if (codeEnable.value) {
EasyLoading.show(status: "发送验证码中");
MsmEntity? res =
await UserAPI.sendSms({"phone": mobileMemberController.text});
EasyLoading.dismiss();
}
if (res.status == 200) {
EasyLoading.showToast('验证码发送成功,请注意查收');
startTimer();
} else {
EasyLoading.showToast(res.message);
}
chageCodeStatus() async {
sendSms();
// MsmEntity? res = await UserService().sendSms({"phone": phone});
} else if (!chinaPhoneNumber(mobileMemberController.text)) {
EasyLoading.showToast("手机号输入有误");
// EasyLoading.show(status: "手机号输入有误");
} else {
EasyLoading.showToast("验证码已发送");
}
// if (codeEnable.value == false) {
// EasyLoading.show(status: "验证码发送太过频繁,请稍后再试");
// EasyLoading.dismiss();
// return;
// }
// if (codeEnable.value) {
// try {
// EasyLoading.show(status: "发送验证码中");
// smsLoading.value = true;
// MsmEntity? res =
// await UserAPI.sendSms({"phone": mobileMemberController.text});
// EasyLoading.dismiss();
// if (res.status == 200) {
// EasyLoading.showToast('验证码发送成功,请注意查收');
// startTimer();
// } else {
// EasyLoading.showToast(res.message);
// }
// } finally {
// smsLoading.value = false;
// }
// // MsmEntity? res = await UserService().sendSms({"phone": phone});
// } else if (!chinaPhoneNumber(mobileMemberController.text)) {
// EasyLoading.showToast("手机号输入有误");
// // EasyLoading.show(status: "手机号输入有误");
// } else {
// EasyLoading.showToast("验证码已发送");
// }
}
bool chinaPhoneNumber(String input) {
......@@ -303,15 +360,15 @@ class SignInController extends GetxController {
@override
void onReady() {
super.onReady();
mobileMemberController.addListener(() {
showClear.value = mobileMemberController.text.isNotEmpty;
codeEnable.value = chinaPhoneNumber(mobileMemberController.text);
setLoginBtnStatus();
});
codeController.addListener(() {
setLoginBtnStatus();
});
initPlatformState();
// mobileMemberController.addListener(() {
// showClear.value = mobileMemberController.text.isNotEmpty;
// codeEnable.value = chinaPhoneNumber(mobileMemberController.text);
// setLoginBtnStatus();
// });
// codeController.addListener(() {
// setLoginBtnStatus();
// });
// initPlatformState();
}
@override
......
import 'dart:io';
import 'dart:math';
import 'package:bruno/bruno.dart';
import 'package:chart/common/routers/routes.dart';
import 'package:chart/pages/application/index.dart';
import 'package:file_picker/file_picker.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/gestures.dart';
import 'package:flutter/material.dart';
import 'package:chart/common/values/values.dart';
import 'package:chart/common/widgets/widgets.dart';
import 'package:flutter/services.dart';
import 'package:flutter_easyloading/flutter_easyloading.dart';
// import 'package:flutter_icons/flutter_icons.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
import 'package:glassmorphism/glassmorphism.dart';
import 'package:gradient_widgets/gradient_widgets.dart';
import 'package:keyboard_actions/keyboard_actions.dart';
import 'package:social_login_buttons/social_login_buttons.dart';
import 'index.dart';
const kPrimaryColor = Color(0xFF6F35A5);
const kPrimaryColor = Color.fromARGB(255, 75, 109, 237);
const kPrimaryLightColor = Color(0xFFF1E6FF);
const double defaultPadding = 16.0;
......@@ -89,6 +94,10 @@ class SignInPage extends GetView<SignInController> {
),
),
),
CupertinoButton(
onPressed: () {},
child: Text('321'),
)
// Text(
// "AI助理",
// textAlign: TextAlign.center,
......@@ -430,163 +439,489 @@ class SignInPage extends GetView<SignInController> {
@override
Widget build(BuildContext context) {
final FocusNode _nodePhone = FocusNode();
final FocusNode _nodeSms = FocusNode();
KeyboardActionsConfig _buildConfig(BuildContext context) {
return KeyboardActionsConfig(
keyboardActionsPlatform: KeyboardActionsPlatform.ALL,
keyboardBarColor: Color.fromARGB(255, 41, 41, 59),
nextFocus: true,
actions: [
// KeyboardActionsItem(
// focusNode: _nodeText1,
// ),
KeyboardActionsItem(focusNode: _nodePhone, toolbarButtons: [
//button 1
(node) {
return GestureDetector(
onTap: () => node.unfocus(),
child: Container(
padding: EdgeInsets.all(8.0),
child: Text(
"完成",
style: TextStyle(color: Colors.white),
),
),
);
},
]),
KeyboardActionsItem(focusNode: _nodeSms, toolbarButtons: [
//button 1
(node) {
return GestureDetector(
onTap: () => node.unfocus(),
child: Container(
padding: EdgeInsets.all(8.0),
child: Text(
"完成",
style: TextStyle(color: Colors.white),
),
),
);
},
]),
],
);
}
return Scaffold(
body: Platform.isIOS
? Container(
width: double.infinity,
height: double.infinity,
// ignore: sort_child_properties_last
child: Column(
children: [
Expanded(
child: Column(
mainAxisAlignment: MainAxisAlignment.end,
children: [
_buildLogo(),
],
)),
Expanded(
body:
// Platform.isIOS
// ?
Container(
width: Get.width,
height: Get.height,
// ignore: sort_child_properties_last
// child:
// Column(
// children: [
// Expanded(
// child: Column(
// mainAxisAlignment: MainAxisAlignment.end,
// children: [
// _buildLogo(),
// ],
// )),
// Expanded(
// child: Center(
// child: Padding(
// padding: EdgeInsets.only(top: 90),
// child: Column(
// mainAxisAlignment: MainAxisAlignment.center,
// children: [
// CupertinoButton(
// child: Text('按钮'),
// onPressed: () {
// // 按钮被点击时的回调函数
// },
// color: CupertinoColors.activeBlue, // 按钮的背景色
// borderRadius:
// BorderRadius.circular(20), // 按钮的圆角半径
// minSize: 30, // 按钮的最小宽度
// padding: EdgeInsets.symmetric(
// horizontal: 20, vertical: 10), // 按钮的内边距
// ),
// CupertinoTextField(),
// SocialLoginButton(
// text: "通过 Apple 登录",
// buttonType: SocialLoginButtonType.apple,
// onPressed: () {
// showDialog(
// context: context,
// builder: (BuildContext context) {
// return CupertinoAlertDialog(
// title: Text('提示'),
// content: Text('确定要删除吗?'),
// actions: <Widget>[
// CupertinoDialogAction(
// child: Text('取消'),
// onPressed: () {
// Navigator.of(context).pop();
// },
// ),
// CupertinoDialogAction(
// child: Text('确定'),
// onPressed: () {
// // 执行删除操作
// Navigator.of(context).pop();
// },
// ),
// ],
// );
// },
// );
// // Get.bottomSheet(
// // Container(
// // padding: EdgeInsets.all(14),
// // decoration: BoxDecoration(
// // // topLeft: Radius.circular(30), topRight: Radius.circular(30)))
// // borderRadius: BorderRadius.only(
// // topLeft: Radius.circular(15),
// // topRight: Radius.circular(15)),
// // color: Colors.white,
// // ),
// // height: 260,
// // child: Column(children: [
// // Text(
// // "请阅读并同意以下条款",
// // style: TextStyle(
// // fontSize: 16,
// // fontWeight: FontWeight.bold),
// // ),
// // SizedBox(
// // height: 20,
// // ),
// // Padding(
// // padding: EdgeInsets.symmetric(
// // vertical: 20),
// // child: RichText(
// // text: TextSpan(
// // style:
// // DefaultTextStyle.of(context)
// // .style,
// // children: [
// // TextSpan(
// // text: '《用户协议》',
// // recognizer:
// // TapGestureRecognizer()
// // ..onTap = () {
// // Get.toNamed(AppRoutes
// // .USER_PRIVACT);
// // },
// // style: TextStyle(
// // fontWeight:
// // FontWeight.bold,
// // color: AppColors
// // .primaryElement)),
// // TextSpan(
// // text: '《隐私权限》',
// // recognizer:
// // TapGestureRecognizer()
// // ..onTap = () {
// // Get.toNamed(
// // AppRoutes
// // .PRIVACT);
// // },
// // style: TextStyle(
// // fontWeight:
// // FontWeight.bold,
// // color: AppColors
// // .primaryElement)),
// // ],
// // ),
// // ),
// // ),
// // SizedBox(
// // height: 20,
// // ),
// // btnFlatButtonWidget(
// // onPressed: () {
// // Get.back();
// // controller.signInWithApple();
// // },
// // width: 294,
// // gbColor: AppColors.primaryElement,
// // fontColor:
// // AppColors.primaryBackground,
// // title: "同意并登录",
// // fontWeight: FontWeight.w500,
// // fontSize: 16,
// // )
// // // Text(
// // // "请阅读并同意以下条款",
// // // style: TextStyle(
// // // fontSize: 16,
// // // color: Colors.blue[900],
// // // fontWeight: FontWeight.bold),
// // // ),
// // ]),
// // ),
// // // backgroundColor: Colors.white,
// // );
// // // controller.signInWithApple
// },
// ),
// SizedBox(
// height: 20,
// ),
// SocialLoginButton(
// text: "不登录使用",
// buttonType:
// SocialLoginButtonType.generalLogin,
// backgroundColor: AppColors.thirdElement,
// onPressed: () async {
// Get.back();
// }),
// ],
// )),
// ),
// )
// ],
// ),
// padding: EdgeInsets.symmetric(horizontal: 16),
decoration: BoxDecoration(color: Color.fromARGB(255, 30, 34, 61)
// image: DecorationImage(
// image: Image.asset("assets/images/background.png").image,
// fit: BoxFit.cover),
),
child: Scaffold(
backgroundColor: Colors.black.withAlpha(0),
appBar: AppBar(
elevation: 0.0,
title: const Text(''),
backgroundColor: Colors.black.withAlpha(0),
),
body: SafeArea(
child: Padding(
padding: EdgeInsets.symmetric(horizontal: 30),
child: KeyboardActions(
config: _buildConfig(context),
child: Container(
child: Center(
child: Padding(
padding: EdgeInsets.only(top: 90),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
SocialLoginButton(
text: "通过 Apple 登录",
buttonType: SocialLoginButtonType.apple,
onPressed: () {
Get.bottomSheet(
Container(
padding: EdgeInsets.all(14),
decoration: BoxDecoration(
// topLeft: Radius.circular(30), topRight: Radius.circular(30)))
borderRadius: BorderRadius.only(
topLeft: Radius.circular(15),
topRight: Radius.circular(15)),
color: Colors.white,
),
height: 260,
child: Column(children: [
Text(
"请阅读并同意以下条款",
style: TextStyle(
fontSize: 16,
fontWeight: FontWeight.bold),
),
SizedBox(
height: 20,
),
Padding(
padding: EdgeInsets.symmetric(
vertical: 20),
child: RichText(
text: TextSpan(
style:
DefaultTextStyle.of(context)
.style,
child: Column(
children: [
Container(
width: 100.w,
height: 100.w,
child: Image.asset(
"assets/images/logo_icon.png",
fit: BoxFit.contain,
),
),
SizedBox(
height: 10,
),
Text(
'AI 写作大师',
style: TextStyle(
color: Colors.white,
fontSize: 24,
fontWeight: FontWeight.bold),
),
SizedBox(
height: Get.height * 0.12,
),
TextField(
maxLength: 11,
controller: controller.mobileMemberController,
keyboardType: TextInputType.number,
focusNode: _nodePhone,
cursorColor:
const Color.fromARGB(255, 119, 101, 244), //
decoration: const InputDecoration(
counterText: '',
hintText: "请输入手机号码",
enabledBorder: UnderlineInputBorder(
borderSide: BorderSide(
color: Color.fromARGB(
255, 47, 52, 60)), // 修改下划线颜色
),
focusedBorder: UnderlineInputBorder(
borderSide: BorderSide(
color: Color.fromARGB(
255, 119, 101, 244)), // 修改下划线颜色
),
),
// Color.argb(255, 41, 45, 55)
),
const SizedBox(
height: 30,
),
TextField(
controller: controller.codeController,
keyboardType: TextInputType.number,
focusNode: _nodeSms,
maxLength: 6,
cursorColor:
const Color.fromARGB(255, 119, 101, 244), //
decoration: InputDecoration(
counterText: '',
suffixIcon: GestureDetector(
onTap: () {
showDialog(
context: context,
barrierDismissible: false,
builder: (BuildContext context) {
return Center(
child: Container(
width: 120,
height: 120,
decoration: BoxDecoration(
color:
Colors.black.withAlpha(135),
borderRadius:
BorderRadius.circular(10),
),
child: Column(
mainAxisAlignment:
MainAxisAlignment
.spaceEvenly,
children: [
TextSpan(
text: '《用户协议》',
recognizer:
TapGestureRecognizer()
..onTap = () {
Get.toNamed(AppRoutes
.USER_PRIVACT);
},
style: TextStyle(
fontWeight:
FontWeight.bold,
color: AppColors
.primaryElement)),
TextSpan(
text: '《隐私权限》',
recognizer:
TapGestureRecognizer()
..onTap = () {
Get.toNamed(
AppRoutes
.PRIVACT);
},
style: TextStyle(
fontWeight:
FontWeight.bold,
color: AppColors
.primaryElement)),
CupertinoActivityIndicator(
radius: 16.00),
Text("验证码发送中")
],
),
),
),
SizedBox(
height: 20,
),
btnFlatButtonWidget(
onPressed: () {
Get.back();
controller.signInWithApple();
},
width: 294,
gbColor: AppColors.primaryElement,
fontColor:
AppColors.primaryBackground,
title: "同意并登录",
fontWeight: FontWeight.w500,
fontSize: 16,
)
// Text(
// "请阅读并同意以下条款",
// style: TextStyle(
// fontSize: 16,
// color: Colors.blue[900],
// fontWeight: FontWeight.bold),
// ),
]),
),
// backgroundColor: Colors.white,
)),
);
},
);
// controller.signInWithApple
},
),
SizedBox(
height: 20,
),
SocialLoginButton(
text: "不登录使用",
buttonType:
SocialLoginButtonType.generalLogin,
backgroundColor: AppColors.thirdElement,
onPressed: () async {
Get.back();
}),
// Get.put(ApplicationController());
// await Get.offAndToNamed(
// AppRoutes.Application);
// }),
// SizedBox(
// height: 20,
// ),
// SocialLoginButton(
// text: "微信登录",
// buttonType:
// SocialLoginButtonType.generalLogin,
// backgroundColor: AppColors.thirdElement,
// onPressed: () async {
// Get.back();
// }),
if (controller.smsLoading.value ||
controller.codeEnable.value) {
controller.smsLoading.value = false;
return Get.back();
}
controller.smsLoading.value = true;
if (!controller.mobileMemberController.text
.isNotEmpty ||
!controller.chinaPhoneNumber(controller
.mobileMemberController.text)) {
EasyLoading.showError('手机号码输入有误',
maskType: EasyLoadingMaskType.none);
controller.smsLoading.value = false;
return Get.back();
}
controller.sendSms();
// showDialog(
// context: context,
// builder:
// (BuildContext context) {
// return CupertinoAlertDialog(
// title: Text("Title"),
// content: Text("Content"),
// actions: [
// CupertinoDialogAction(
// child: Text("Cancel"),
// onPressed: () {
// Navigator.of(context)
// .pop();
// },
// ),
// CupertinoDialogAction(
// child: Text("OK"),
// onPressed: () {
// // do something
// Navigator.of(context)
// .pop();
// },
// ),
// ],
// );
// },
// );
},
// controller.chageCodeStatus,
child: Obx(() => Text(
'${controller.verifyStr}',
style: TextStyle(
height: 2.2,
color: Color.fromARGB(
255, 119, 101, 244),
),
))),
hintText: "请输入验证码",
enabledBorder: const UnderlineInputBorder(
borderSide: BorderSide(
color: Color.fromARGB(255, 47, 52, 60),
), // 修改下划线颜色
),
focusedBorder: const UnderlineInputBorder(
borderSide: BorderSide(
color: Color.fromARGB(
255, 119, 101, 244)), // 修改下划线颜色
),
),
),
SizedBox(
height: 50,
),
GradientButton(
// isEnabled: !controller.state.isLoading,
increaseHeightBy: 10.00,
increaseWidthBy: Get.width * .7,
callback: controller.handleSignIn,
// callback: controller.genInner,
shapeRadius:
const BorderRadius.all(Radius.circular(5)),
elevation: 0,
gradient: const LinearGradient(
colors: [
Color(0xFFbe6afb),
Color(0xFF9c67f6),
Color(0xFF7965f8)
],
)),
),
)
],
),
padding: EdgeInsets.symmetric(horizontal: 16),
decoration: BoxDecoration(
image: DecorationImage(
image: Image.asset("assets/images/bg2.png").image,
fit: BoxFit.cover),
))
: buildAndroidSigin(context));
begin: Alignment.topCenter,
end: Alignment.bottomCenter,
),
child: Text("登录",
style: TextStyle(
fontSize: 14, fontWeight: FontWeight.w500)),
),
SizedBox(
height: 20,
),
Platform.isIOS
? GestureDetector(
onTap: controller.handleTouristsLogin,
child: Text('游客登录'),
)
: SizedBox.shrink(),
SizedBox(
height: Get.height * 0.2,
),
RichText(
text: TextSpan(
style: TextStyle(fontSize: 12),
children: <InlineSpan>[
const TextSpan(
text: '登录即代表您已经阅读并同意',
style: TextStyle(color: Colors.white)),
TextSpan(
text: '《服务协议》',
style: const TextStyle(color: Colors.grey),
recognizer: TapGestureRecognizer()
..onTap = () {
Get.toNamed(AppRoutes.USER_EULA);
},
),
TextSpan(
text: '《隐私政策》',
style: const TextStyle(color: Colors.grey),
recognizer: TapGestureRecognizer()
..onTap = () {
Get.toNamed(AppRoutes.PRIVACT);
},
),
]),
)
// TextFormField(
// scrollPadding: EdgeInsets.symmetric(
// horizontal: 120, vertical: 20),
// // controller: controller.mobileMemberController,
// keyboardType: TextInputType.phone,
// textInputAction: TextInputAction.next,
// cursorColor: kPrimaryColor,
// onSaved: (email) {},
// decoration: InputDecoration(
// hintText: '请输入手机号',
// contentPadding:
// EdgeInsets.fromLTRB(0, 0, 0, 9),
// border: OutlineInputBorder(),
// suffixIcon: null),
// // style:
// ),
],
)),
))),
)),
)
// : buildAndroidSigin(context)
);
}
Widget buildAndroidSigin(BuildContext buildContext) {
......
......@@ -18,7 +18,7 @@ class WelcomeController extends GetxController {
// 跳转 注册界面
handleHome() async {
await UserStore.to.refreshInfo();
// await UserStore.to.refreshInfo();
await ConfigStore.to.saveAlreadyOpen();
// ApplicationController.to.state.isNetWorkErr = false;
Get.offAndToNamed(AppRoutes.Application);
......
......@@ -81,7 +81,8 @@ class HomeController extends GetxController with SingleGetTickerProviderMixin {
/// 右上角分享管理相关菜单
List<Widget> topRightBarMenus() {
/// 选中数据不为空 或者 展示选择菜单右侧即显示 分享相关控制
return (selectedItems.isEmpty == true && chatRowCheckRadioShowed.value == false)
return (selectedItems.isEmpty == true &&
chatRowCheckRadioShowed.value == false)
? [
RotationTransition(
turns: animation,
......@@ -455,7 +456,9 @@ class HomeController extends GetxController with SingleGetTickerProviderMixin {
//只有Android才会存在登录情况
if (GetPlatform.isAndroid) {
var rev = await Get.toNamed(AppRoutes.SIGN_IN);
print(rev);
} else {
EasyLoading.showInfo("请先登录");
await Get.toNamed(AppRoutes.SIGN_IN);
}
} else {
if (GetPlatform.isAndroid) {
......@@ -517,15 +520,15 @@ class HomeController extends GetxController with SingleGetTickerProviderMixin {
),
// ItemModel('收藏', Icons.collections),
// ItemModel('删除', Icons.delete),
ItemModel('多选', Icons.playlist_add_check, (message, controller) {
state.messageList.forEach((element) {
element.showMenu = true;
});
state.messageList
.replaceRange(0, state.messageList.length - 1, state.messageList);
controller.hideMenu();
chatRowCheckRadioShowed.value = true;
}),
// ItemModel('多选', Icons.playlist_add_check, (message, controller) {
// state.messageList.forEach((element) {
// element.showMenu = true;
// });
// state.messageList
// .replaceRange(0, state.messageList.length - 1, state.messageList);
// controller.hideMenu();
// chatRowCheckRadioShowed.value = true;
// }),
// ItemModel('引用', Icons.format_quote),
// ItemModel('提醒', Icons.add_alert),
// ItemModel('搜一搜', Icons.search),
......@@ -574,7 +577,7 @@ class HomeController extends GetxController with SingleGetTickerProviderMixin {
margin: EdgeInsets.only(top: 2),
child: Text(
item.title,
style: TextStyle(color: Colors.white, fontSize: 12),
style: TextStyle(color: Colors.white, fontSize: 8),
),
),
],
......@@ -632,11 +635,27 @@ class HomeController extends GetxController with SingleGetTickerProviderMixin {
tabMessage(ChatMessage message) {
if (message.user.id == '0' && !state.isLoading) {
sendMessage(Chat.ChatMessage(
text: "${message.text}",
final textMessage = Chat.ChatMessage(
user: _user,
createdAt: DateTime.now(),
));
// id: const Uuid().v4(),
text: "${message.text}",
);
_addMessage(textMessage);
final receiveMessage = Chat.ChatMessage(
user: receiveUser,
createdAt: DateTime.now(),
status: MessageStatus.pending,
// id: const Uuid().v4(),
text: message.customProperties!['question'],
);
_addMessage(receiveMessage);
// sendMessage(Chat.ChatMessage(
// text: "${message.text}",
// user: _user,
// createdAt: DateTime.now(),
// ));
}
// Clipboard.setData(ClipboardData(text: message?.text));
// EasyLoading.showSuccess("复制成功");
......
......@@ -19,43 +19,145 @@ class ChatPageState {
createdAt: DateTime.now(),
// id: const Uuid().v4(),
text: "【有志者,事竟成】用英文怎么说",
customProperties: {"title": '语言翻译', 'icon': 'a'}),
customProperties: {
"title": '语言翻译',
'icon': 'a',
'question': """
Where there's a will, there's a way.
"""
}),
Chat.ChatMessage(
user: _userPlaceHolder,
createdAt: DateTime.now(),
// id: const Uuid().v4(),
text: "请帮我列出双色球的预测方法?",
customProperties: {"title": '难题破解', 'icon': 'a'}),
customProperties: {
"title": '难题破解',
'icon': 'a',
"question":
'很抱歉,作为AI语言模型,我不能提供双色球的预测方法。彩票的结果是随机的,没有任何方法可以准确地预测彩票号码。请记住,购买彩票应该是一种娱乐方式,而不是一种赚钱的方法。请理性购彩,不要过度投注。'
}),
Chat.ChatMessage(
user: _userPlaceHolder,
createdAt: DateTime.now(),
// id: const Uuid().v4(),
text: "外星人真实存在吗?",
customProperties: {"title": '宇宙奥义', 'icon': 'a'}),
customProperties: {
"title": '宇宙奥义',
'icon': 'a',
'question':
"作为AI语言模型,我不能确定外星人是否真实存在,因为目前还没有确凿的证据证明外星人的存在。然而,科学家们一直在寻找外星生命的迹象,并且在宇宙中发现了一些可能存在生命的地方。但是,我们需要更多的研究和证据来确定外星生命是否真的存在。"
}),
Chat.ChatMessage(
user: _userPlaceHolder,
createdAt: DateTime.now(),
// id: const Uuid().v4(),
text: "三星堆文化来自何方?",
customProperties: {"title": '历史谜题', 'icon': 'a'}),
customProperties: {
"title": '历史谜题',
'icon': 'a',
"question": """
三星堆文化是中国古代文明之一,起源于四川省广汉市三星堆遗址。该文化的发现和研究始于20世纪80年代,是中国考古学的一项重大发现。
根据考古学家的研究,三星堆文化的起源可以追溯到公元前约1600年至公元前1046年的商朝晚期至西周早期。该文化的主要特征是青铜器制作技术高超,同时还有大量的玉器、陶器和石器等文物出土。此外,三星堆文化还有独特的祭祀和宗教信仰,如青铜人像、神树、神兽等。
至于三星堆文化的来源和发展,目前还没有确切的答案。有学者认为,三星堆文化可能是由多个地区的文化相互影响和融合而成的,也有学者认为,三星堆文化可能是由外来移民带来的。不过,这些都需要更多的考古和研究来证实。
"""
}),
Chat.ChatMessage(
user: _userPlaceHolder,
createdAt: DateTime.now(),
// id: const Uuid().v4(),
text: "若xy-x+y=0,且xy>0,则1/x-1/y的值为多少?",
customProperties: {"title": '学习工作', 'icon': 'a'}),
customProperties: {
"title": '学习工作',
'icon': 'a',
'question': """
我们可以将xy-x+y=0变形为 (x+1)(y-1)=1,因为xy>0,所以x和y的符号相同。
假设x和y都是正数,则有:
(x+1)(y-1)=1
y-1=1/(x+1)
y=1/(x+1)+1
将y代入原方程得:
x(1/(x+1)+1)-1/(x+1)-1=0
x/(x+1)+x-1/(x+1)-1=0
x/(x+1)-1/(x+1)+x-1=0
(x-1)/(x+1)+x-1=0
(x-1)+(x-1)^2=0
(x-1)(x+2)=0
因为x>0,所以x=1,y=2。
因此,1/x-1/y=1/1-1/2=1/2。
因此,1/x-1/y的值为1/2。
"""
}),
Chat.ChatMessage(
user: _userPlaceHolder,
createdAt: DateTime.now(),
// id: const Uuid().v4(),
text: "怎么做辣椒炒肉?",
customProperties: {"title": '美食烹饪', 'icon': 'a'}),
customProperties: {
"title": '美食烹饪',
'icon': 'a',
"question": """
辣椒炒肉是一道非常常见的中式家常菜,下面是一份简单易学的辣椒炒肉的做法:
所需材料:
瘦猪肉(切成小块):250克
青红辣椒(切成小段):适量
姜蒜末:适量
料酒:适量
生抽:适量
盐:适量
糖:适量
淀粉:适量
食用油:适量
步骤:
将瘦猪肉切成小块,加入料酒、生抽、盐、糖和淀粉,搅拌均匀腌制10分钟。
热锅凉油,加入腌制好的猪肉块煸炒至变色,盛出备用。
锅中留底油,加入姜蒜末和青红辣椒段煸炒出香味。
将煸炒好的猪肉块倒入锅中,继续翻炒均匀。
最后加入少量盐和糖调味,翻炒均匀即可。
辣椒炒肉的口感香辣可口,适合搭配米饭食用。如果你喜欢更辣的口味,可以根据个人口味加入更多的辣椒。
"""
}),
Chat.ChatMessage(
user: _userPlaceHolder,
createdAt: DateTime.now(),
// id: const Uuid().v4(),
text: "身高180cm,体重180斤,那么BMI值是多少?",
customProperties: {"title": '健康养身', 'icon': 'a'})
customProperties: {
"title": '健康养身',
'icon': 'a',
"question": """
BMI(Body Mass Index,身体质量指数)是衡量一个人体重与身高之间关系的指标。计算公式为:BMI = 体重(kg)/身高(m)的平方。
首先,将身高从厘米转换为米,即180cm=1.8m。
其次,将体重从斤转换为千克,即180斤=90公斤。
最后,代入公式计算BMI值:
BMI = 90 / (1.8 x 1.8) ≈ 27.8
因此,身高180cm,体重180斤的人的BMI值约为27.8,属于超重范畴。
"""
})
].obs;
// get _messageList =>
......
import 'dart:io';
import 'package:chart/pages/my/widgets/share.dart';
import 'package:get/get.dart';
import 'package:fluwx/fluwx.dart';
import 'package:share_plus/share_plus.dart';
import '../../common/routers/names.dart';
import 'package:fluwx/fluwx.dart' as fluwx;
class MyController extends GetxController {
MyController();
......@@ -11,6 +14,61 @@ class MyController extends GetxController {
update(["my"]);
}
dynamic getShareModel(ShareType shareType, ShareInfo shareInfo) {
var scene = fluwx.WeChatScene.SESSION;
switch (shareType) {
case ShareType.SESSION:
scene = fluwx.WeChatScene.SESSION;
break;
case ShareType.TIMELINE:
scene = fluwx.WeChatScene.TIMELINE;
break;
case ShareType.COPY_LINK:
break;
case ShareType.DOWNLOAD:
break;
}
if (shareInfo.img != null) {
return fluwx.WeChatShareWebPageModel(
shareInfo.url,
title: shareInfo.title,
thumbnail: fluwx.WeChatImage.network(shareInfo.img),
scene: scene,
);
} else {
return fluwx.WeChatShareWebPageModel(
shareInfo.url,
title: shareInfo.title,
scene: scene,
);
}
}
_initFluwx() async {
await registerWxApi(
appId: 'wxac6457d4b052cc48',
doOnAndroid: true,
doOnIOS: true,
universalLink: 'https://order.1clickpass.com/app/',
);
var result = await isWeChatInstalled;
print('is installed $result');
}
handleToWx() async {
await fluwx.openWeChatCustomerServiceChat(
url: "https://work.weixin.qq.com/kfid/kfc4e77a401df6f7d09",
corpId: "wwe816b5b616eaf0f3");
// fluwx.shareToWeChat(
// WeChatShareTextModel("source text", scene: WeChatScene.TIMELINE));
}
handleShare() async {
await Share.shareWithResult(
'https://apps.apple.com/cn/app/ai%E5%86%99%E4%BD%9C%E5%A4%A7%E5%B8%88/id1671136252');
}
void onTap() {}
// @override
......@@ -22,6 +80,7 @@ class MyController extends GetxController {
void onReady() {
super.onReady();
_initData();
_initFluwx();
}
// @override
......
import 'package:bruno/bruno.dart';
import 'package:chart/common/routers/routes.dart';
import 'package:chart/common/store/store.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:gradient_widgets/gradient_widgets.dart';
import 'package:fluwx/fluwx.dart' as fluwx;
import 'index.dart';
import 'widgets/share.dart';
class MyPage extends GetView<MyController> {
const MyPage({Key? key}) : super(key: key);
// 主视图
Widget _buildView() {
Widget _buildView(context) {
final c = Get.put(UserStore());
return ListView(
padding: EdgeInsets.symmetric(horizontal: 10),
children: [
Obx(() => c.profile.expireTime == null
? const Center(
child: Text(
"您还不是 VIP 会员",
style: TextStyle(
color: Color.fromARGB(255, 160, 165, 184),
fontSize: 14,
return Obx(() => ListView(
padding: EdgeInsets.symmetric(horizontal: 10),
children: [
Obx(() => GestureDetector(
onTap: () {
if (UserStore.to.isLogin) {
} else {
Get.toNamed(AppRoutes.SIGN_IN);
}
},
child: Row(
children: [
Container(
width: 60,
height: 60,
child: ClipRRect(
borderRadius: BorderRadius.circular(60.0),
child: Image.asset(
"assets/images/60x3.png",
fit: BoxFit.contain,
),
)),
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
Padding(
padding: EdgeInsets.symmetric(horizontal: 20),
child: Text(
"用户名:${UserStore.to.profile.username.isEmpty ? '游客' : UserStore.to.profile.username}",
textAlign: TextAlign.left,
maxLines: 1,
overflow: TextOverflow.ellipsis,
style: TextStyle(
fontSize: 16, fontWeight: FontWeight.bold),
),
),
!UserStore.to.isLogin
? Padding(
padding: EdgeInsets.symmetric(horizontal: 20),
child: Text(
'您还未登录,点击登录。',
textAlign: TextAlign.center,
style: TextStyle(
color: Color.fromARGB(255, 160, 165, 184),
),
),
)
: c.profile.expireTime == null
? Padding(
padding: EdgeInsets.only(left: 20),
child: Text(
"您还不是 VIP 会员",
textAlign: TextAlign.left,
style: TextStyle(
color: Color.fromARGB(
255, 160, 165, 184),
fontSize: 16,
fontWeight: FontWeight.bold),
))
: Align(
alignment: Alignment.centerLeft,
child: Container(
// color: Colors.amber,
padding: EdgeInsets.symmetric(
horizontal: 20, vertical: 0),
child: RichText(
textAlign: TextAlign.left,
text: TextSpan(children: [
const TextSpan(
text: '会员到期时间:',
style: TextStyle(
color: Color.fromARGB(
255, 160, 165, 184),
fontSize: 12,
),
),
TextSpan(
style: TextStyle(
fontSize: 12,
),
text:
"${c.profile.expireTime.year}-${c.profile.expireTime.month}-${c.profile.expireTime.day}"),
const TextSpan(
text: ',剩余积分:',
style: TextStyle(
color: Color.fromARGB(
255, 160, 165, 184),
fontSize: 12,
),
),
TextSpan(
text: '${c.profile.integral}',
style: const TextStyle(
fontSize: 12,
),
),
const TextSpan(
text: '分。',
style: TextStyle(
color: Color.fromARGB(
255, 160, 165, 184),
fontSize: 12,
),
),
// Text(
// "您的VIP会员资格将于" +
// "${c.profile.expireTime.year}-${c.profile.expireTime.month}-${c.profile.expireTime.day}" +
// "过期,如果您是自动续费会员将会在过期日前一天自动续费。",
// textAlign: TextAlign.center,
// style: TextStyle(
// color: color,
// fontSize: 14,
// ),
// )
])),
),
)
],
)),
UserStore.to.isLogin
? SizedBox.shrink()
: SizedBox(
width: 60,
child: Center(
child:
Icon(Icons.arrow_forward_ios_outlined)),
),
],
),
),
)
: Align(
alignment: Alignment.center,
child: Container(
// color: Colors.amber,
padding: EdgeInsets.symmetric(horizontal: 20, vertical: 0),
child: RichText(
textAlign: TextAlign.center,
text: TextSpan(children: [
const TextSpan(
text: '您的VIP会员资格将于',
style: TextStyle(
color: Color.fromARGB(255, 160, 165, 184),
fontSize: 14,
)),
UserStore.to.isLogin
? Container(
margin: EdgeInsets.only(top: 20),
child: InkWell(
borderRadius: BorderRadius.circular(10),
onTap: () {
controller.virtualPay();
},
child: Ink(
width: Get.width,
decoration: BoxDecoration(
borderRadius: BorderRadius.all(Radius.circular(10)),
gradient: const LinearGradient(
colors: [
Color(0xFF3d3f54),
Color(0xFF333450),
Color(0xFF2b2b4d)
],
begin: Alignment.topCenter,
end: Alignment.bottomCenter,
),
),
TextSpan(
text:
" ${c.profile.expireTime.year}-${c.profile.expireTime.month}-${c.profile.expireTime.day} "),
const TextSpan(
text: '过期,如果您是自动续费会员将会在过期日前一天自动续费。',
style: TextStyle(
color: Color.fromARGB(255, 160, 165, 184),
fontSize: 14,
),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Row(
children: [
Icon(Icons.monetization_on_outlined),
SizedBox(
width: 10,
),
Text('购买订阅')
],
),
Icon(Icons.arrow_forward_ios_outlined),
]),
padding:
EdgeInsets.symmetric(horizontal: 20, vertical: 15),
),
),
)
: SizedBox.shrink(),
Container(
margin: EdgeInsets.only(top: 20),
child: InkWell(
borderRadius: BorderRadius.circular(10),
onTap: () {
Get.toNamed(AppRoutes.USER_EULA);
},
child: Ink(
width: Get.width,
decoration: BoxDecoration(
borderRadius: BorderRadius.all(Radius.circular(10)),
gradient: const LinearGradient(
colors: [
Color(0xFF3d3f54),
Color(0xFF333450),
Color(0xFF2b2b4d)
],
begin: Alignment.topCenter,
end: Alignment.bottomCenter,
),
),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Row(
children: [
Icon(Icons.event_note_outlined),
SizedBox(
width: 10,
),
Text('服务协议')
],
),
// Text(
// "您的VIP会员资格将于" +
// "${c.profile.expireTime.year}-${c.profile.expireTime.month}-${c.profile.expireTime.day}" +
// "过期,如果您是自动续费会员将会在过期日前一天自动续费。",
// textAlign: TextAlign.center,
// style: TextStyle(
// color: color,
// fontSize: 14,
// ),
// )
])),
),
)),
Container(
margin: EdgeInsets.only(top: 20),
child: InkWell(
borderRadius: BorderRadius.circular(10),
onTap: () {
controller.virtualPay();
},
child: Ink(
width: Get.width,
decoration: BoxDecoration(
borderRadius: BorderRadius.all(Radius.circular(10)),
gradient: const LinearGradient(
colors: [
Color(0xFF3d3f54),
Color(0xFF333450),
Color(0xFF2b2b4d)
],
begin: Alignment.topCenter,
end: Alignment.bottomCenter,
Icon(Icons.arrow_forward_ios_outlined),
]),
padding: EdgeInsets.symmetric(horizontal: 20, vertical: 15),
),
),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Row(
children: [
Icon(Icons.monetization_on_outlined),
SizedBox(
width: 10,
),
Text('购买订阅')
),
Container(
margin: const EdgeInsets.only(top: 20),
child: InkWell(
borderRadius: BorderRadius.circular(10),
onTap: () {
Get.toNamed(AppRoutes.PRIVACT);
},
child: Ink(
width: Get.width,
decoration: const BoxDecoration(
borderRadius: BorderRadius.all(Radius.circular(10)),
gradient: LinearGradient(
colors: [
Color(0xFF3d3f54),
Color(0xFF333450),
Color(0xFF2b2b4d)
],
begin: Alignment.topCenter,
end: Alignment.bottomCenter,
),
Icon(Icons.arrow_forward_ios_outlined),
]),
padding: EdgeInsets.symmetric(horizontal: 20, vertical: 15),
),
),
),
Container(
margin: EdgeInsets.only(top: 20),
child: InkWell(
borderRadius: BorderRadius.circular(10),
onTap: () {
Get.toNamed(AppRoutes.USER_EULA);
},
child: Ink(
width: Get.width,
decoration: BoxDecoration(
borderRadius: BorderRadius.all(Radius.circular(10)),
gradient: const LinearGradient(
colors: [
Color(0xFF3d3f54),
Color(0xFF333450),
Color(0xFF2b2b4d)
],
begin: Alignment.topCenter,
end: Alignment.bottomCenter,
),
),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Row(
),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Icon(Icons.list),
SizedBox(
width: 10,
Row(
children: [
Icon(Icons.privacy_tip),
SizedBox(
width: 10,
),
Text('隐私政策')
],
),
Text('服务协议')
],
),
Icon(Icons.arrow_forward_ios_outlined),
]),
padding: EdgeInsets.symmetric(horizontal: 20, vertical: 15),
),
),
),
Container(
margin: EdgeInsets.only(top: 20),
child: InkWell(
borderRadius: BorderRadius.circular(10),
onTap: () {
Get.toNamed(AppRoutes.PRIVACT);
},
child: Ink(
width: Get.width,
decoration: BoxDecoration(
borderRadius: BorderRadius.all(Radius.circular(10)),
gradient: const LinearGradient(
colors: [
Color(0xFF3d3f54),
Color(0xFF333450),
Color(0xFF2b2b4d)
],
begin: Alignment.topCenter,
end: Alignment.bottomCenter,
const Icon(Icons.arrow_forward_ios_outlined),
]),
padding: EdgeInsets.symmetric(horizontal: 20, vertical: 15),
),
),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Row(
),
Container(
margin: const EdgeInsets.only(top: 20),
child: InkWell(
borderRadius: BorderRadius.circular(10),
onTap: () {
controller.handleToWx();
// showModalBottomSheet(
// /**
// * showModalBottomSheet常用属性
// * shape 设置形状
// * isScrollControlled:全屏还是半屏
// * isDismissible:外部是否可以点击,false不可以点击,true可以点击,点击后消失
// * backgroundColor : 设置背景色
// */
// backgroundColor: Colors.transparent,
// context: context,
// builder: (BuildContext context) {
// return ShareWidget(
// ShareInfo('Hello world', 'http://www.baidu.com'),
// list: [
// ShareOpt(
// title: '朋友圈',
// img: 'assets/images/icon_wechat_moments.jpg',
// shareType: ShareType.TIMELINE,
// doAction: (shareType, shareInfo) {
// var model = controller.getShareModel(
// shareType, shareInfo);
// fluwx.shareToWeChat(model);
// })
// ],
// );
// });
},
child: Ink(
width: Get.width,
decoration: const BoxDecoration(
borderRadius: BorderRadius.all(Radius.circular(10)),
gradient: LinearGradient(
colors: [
Color(0xFF3d3f54),
Color(0xFF333450),
Color(0xFF2b2b4d)
],
begin: Alignment.topCenter,
end: Alignment.bottomCenter,
),
),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Icon(Icons.list),
SizedBox(
width: 10,
Row(
children: [
const Icon(Icons.wechat),
SizedBox(
width: 10,
),
Text('微信客服')
],
),
Text('隐私政策')
const Icon(Icons.arrow_forward_ios_outlined),
]),
padding: EdgeInsets.symmetric(horizontal: 20, vertical: 15),
),
),
),
Container(
margin: const EdgeInsets.only(top: 20),
child: InkWell(
borderRadius: BorderRadius.circular(10),
onTap: () {
controller.handleShare();
// showModalBottomSheet(
// /**
// * showModalBottomSheet常用属性
// * shape 设置形状
// * isScrollControlled:全屏还是半屏
// * isDismissible:外部是否可以点击,false不可以点击,true可以点击,点击后消失
// * backgroundColor : 设置背景色
// */
// backgroundColor: Colors.transparent,
// context: context,
// builder: (BuildContext context) {
// return ShareWidget(
// ShareInfo('Hello world', 'http://www.baidu.com'),
// list: [
// ShareOpt(
// title: '朋友圈',
// img: 'assets/images/icon_wechat_moments.jpg',
// shareType: ShareType.TIMELINE,
// doAction: (shareType, shareInfo) {
// var model = controller.getShareModel(
// shareType, shareInfo);
// fluwx.shareToWeChat(model);
// })
// ],
// );
// });
},
child: Ink(
width: Get.width,
decoration: const BoxDecoration(
borderRadius: BorderRadius.all(Radius.circular(10)),
gradient: LinearGradient(
colors: [
Color(0xFF3d3f54),
Color(0xFF333450),
Color(0xFF2b2b4d)
],
begin: Alignment.topCenter,
end: Alignment.bottomCenter,
),
Icon(Icons.arrow_forward_ios_outlined),
]),
padding: EdgeInsets.symmetric(horizontal: 20, vertical: 15),
),
),
),
UserStore.to.isLogin
? Column(
children: [
SizedBox(
height: 145,
),
GestureDetector(
onTap: () {
UserStore.to.logout();
Get.back();
},
child: Container(
width: Get.width - 40,
height: 45,
alignment: Alignment.center,
decoration: BoxDecoration(
borderRadius:
BorderRadius.all(Radius.circular(45 / 2.0)),
color: Color(0xFF6F35A5)),
child: Text(
"退出".toUpperCase(),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Row(
children: [
const Icon(Icons.ios_share_outlined),
SizedBox(
width: 10,
),
Text('分享APP')
],
),
const Icon(Icons.arrow_forward_ios_outlined),
]),
padding: EdgeInsets.symmetric(horizontal: 20, vertical: 15),
),
),
),
UserStore.to.isLogin
? Container(
margin: const EdgeInsets.only(top: 20),
child: InkWell(
borderRadius: BorderRadius.circular(10),
onTap: () {
showDialog(
context: context,
builder: (BuildContext context) {
return CupertinoAlertDialog(
title: Text('提示'),
content: Text('确定要退出吗?'),
actions: <Widget>[
CupertinoDialogAction(
child: Text('取消'),
onPressed: () {
Navigator.pop(context); // 关闭弹窗
},
),
CupertinoDialogAction(
child: Text('确定'),
onPressed: () {
UserStore.to.logout();
// Get.back();
Navigator.pop(context); // 关闭弹窗
},
),
],
);
},
);
},
child: Ink(
width: Get.width,
decoration: const BoxDecoration(
borderRadius: BorderRadius.all(Radius.circular(10)),
gradient: LinearGradient(
colors: [
Color(0xFF3d3f54),
Color(0xFF333450),
Color(0xFF2b2b4d)
],
begin: Alignment.topCenter,
end: Alignment.bottomCenter,
),
),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Row(
children: [
Icon(Icons.logout),
SizedBox(
width: 10,
),
Text('退出登录')
],
),
const Icon(Icons.arrow_forward_ios_outlined),
]),
padding:
EdgeInsets.symmetric(horizontal: 20, vertical: 15),
),
),
),
],
)
: Container()
// GradientButton(child: Text("321"), callback: () {})
],
);
)
: SizedBox.shrink(),
// UserStore.to.isLogin
// ? Column(
// children: [
// SizedBox(
// height: 145,
// ),
// GestureDetector(
// onTap: () {
// UserStore.to.logout();
// Get.back();
// },
// child: Container(
// width: Get.width - 40,
// height: 45,
// alignment: Alignment.center,
// decoration: BoxDecoration(
// borderRadius:
// BorderRadius.all(Radius.circular(45 / 2.0)),
// color: Color(0xFF6F35A5)),
// child: Text(
// "退出".toUpperCase(),
// ),
// ),
// ),
// ],
// )
// : SizedBox.shrink()
// GradientButton(child: Text("321"), callback: () {})
],
));
}
@override
......@@ -237,7 +520,7 @@ class MyPage extends GetView<MyController> {
backgroundColor: Color.fromARGB(0, 29, 33, 60),
),
body: SafeArea(
child: _buildView(),
child: _buildView(context),
),
),
);
......
import 'package:flutter/material.dart';
/// 点击事件
typedef OnItemClickListener = void Function(int index);
typedef DoAction = void Function(ShareType shareType, ShareInfo shareInfo);
enum ShareType { SESSION, TIMELINE, COPY_LINK, DOWNLOAD }
/// 定义分享内容
class ShareInfo {
/// 标题
String title;
/// 连接
String url;
/// 图片
var img;
/// 描述
String describe;
ShareInfo(this.title, this.url, {this.img, this.describe = ""});
static ShareInfo fromJson(Map map) {
return ShareInfo(map['title'], map['url'],
img: map['img'], describe: map['describe']);
}
}
/// 分享操作
class ShareOpt {
final String title;
final String img;
final DoAction doAction;
final ShareType shareType;
const ShareOpt(
{this.title = "",
this.img = "",
this.shareType = ShareType.SESSION,
required this.doAction});
}
/// 弹出窗
class ShareWidget extends StatefulWidget {
final List<ShareOpt> list;
final ShareInfo shareInfo;
const ShareWidget(this.shareInfo, {Key? key, required this.list})
: super(key: key);
@override
_ShareWidgetState createState() => _ShareWidgetState();
}
class _ShareWidgetState extends State<ShareWidget> {
@override
void initState() {
super.initState();
}
@override
Widget build(BuildContext context) {
return Container(
height: 170,
child: Column(
children: <Widget>[
Container(
margin: EdgeInsets.only(
left: 10,
right: 10,
),
//边框设置
decoration: BoxDecoration(
//背景
color: Colors.white,
//设置四周边框
border: Border.all(
width: 1,
color: Colors.white,
),
//设置四周圆角角度
borderRadius: BorderRadius.all(
Radius.circular(10.0),
),
),
//设置 child 居中
alignment: Alignment.center,
height: 100.0,
child: Padding(
padding: EdgeInsets.fromLTRB(0.0, 10.0, 0.0, 0.0),
child: new Container(
height: 100.0,
child: new GridView.builder(
gridDelegate: new SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 4,
mainAxisSpacing: 5.0,
childAspectRatio: 1.0),
itemBuilder: (BuildContext context, int index) {
return GestureDetector(
behavior: HitTestBehavior.opaque, // 空白地方也可以点击
onTap: () {
Navigator.pop(context);
widget.list[index].doAction(
widget.list[index].shareType, widget.shareInfo);
},
child: Column(
children: <Widget>[
Padding(
padding: EdgeInsets.fromLTRB(0.0, 6.0, 0.0, 6.0),
child: new Image.asset(
widget.list[index].img,
width: 50.0,
height: 50.0,
fit: BoxFit.fill,
),
),
Text(widget.list[index].title)
],
),
);
},
itemCount: widget.list.length,
),
),
),
),
Container(
margin: EdgeInsets.only(
left: 10,
right: 10,
top: 10,
bottom: 10,
),
//边框设置
decoration: BoxDecoration(
//背景
color: Colors.white,
//设置四周边框
border: Border.all(
width: 1,
color: Colors.white,
),
//设置四周圆角角度
borderRadius: BorderRadius.all(
Radius.circular(10.0),
),
),
//设置 child 居中
alignment: Alignment.center,
height: 50.0,
child: GestureDetector(
onTap: () => Navigator.pop(context),
behavior: HitTestBehavior.opaque,
// 在空白的范围内就都可以点击,否则只有点击children里的text 或者image才有效果
child: Center(
child: new Padding(
padding: EdgeInsets.fromLTRB(0.0, 8.0, 0.0, 8.0),
child: const Text(
'取消',
),
),
),
),
),
],
),
);
}
}
......@@ -50,6 +50,7 @@ class PrivacyPage extends GetView<PrivacyController> {
builder: (_) {
return Scaffold(
appBar: AppBar(
backgroundColor: Color.fromARGB(255, 30, 34, 61),
leading: IconButton(
tooltip: '返回上一页',
icon: const Icon(
......
......@@ -26,6 +26,16 @@ class _NewsPageListState extends State<NewsPageList>
return GetX<UserDetailController>(
init: controller,
builder: (controller) => SmartRefresher(
header: ClassicHeader(
releaseText: "松开刷新",
refreshingText: "刷新数据中",
completeText: "刷新数据成功",
idleText: "下拉刷新"),
footer: ClassicFooter(
loadingText: "正在加载中...",
// loadStyle: LoadStyle.ShowWhenLoading,
// completeDuration: Duration(milliseconds: 500),
noDataText: '没有更多数据啦'),
enablePullUp: true,
controller: controller.refreshController,
onRefresh: controller.onRefresh,
......
......@@ -6,7 +6,7 @@ packages:
description:
name: _flutterfire_internals
sha256: f175bc1414e4edf8c5b83372c98eeabecf8353f39c9da423c2cfdf1f1f508788
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "1.1.0"
alipay_kit:
......@@ -14,7 +14,7 @@ packages:
description:
name: alipay_kit
sha256: fa8e55b304f770cd9640356a72c7b12476eb72e5acf231cea568fd9463213a4c
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "5.0.0"
alipay_kit_android:
......@@ -22,7 +22,7 @@ packages:
description:
name: alipay_kit_android
sha256: "5c8ec94fb0c2e8cdffc4d0ed9459b8c30bf0e822c2c1b910ff85d2124ad7ecb4"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "5.0.0"
animated_text_kit:
......@@ -30,7 +30,7 @@ packages:
description:
name: animated_text_kit
sha256: "37392a5376c9a1a503b02463c38bc0342ef814ddbb8f9977bc90f2a84b22fa92"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "4.2.2"
another_flushbar:
......@@ -38,7 +38,7 @@ packages:
description:
name: another_flushbar
sha256: fa09f8a4ca582c417669b7b1d0e85ce65bd074d80bb0dcbb1302ad1b22bdc3ef
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "1.12.29"
another_transformer_page_view:
......@@ -46,7 +46,7 @@ packages:
description:
name: another_transformer_page_view
sha256: "91cd4bef0b66dababe481bc02eb41f9503178d91dabcb3c15423b05abf1980d8"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "1.1.0"
app_settings:
......@@ -54,15 +54,23 @@ packages:
description:
name: app_settings
sha256: "66715a323ac36d6c8201035ba678777c0d2ea869e4d7064300d95af10c3bb8cb"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "4.2.0"
archive:
dependency: transitive
description:
name: archive
sha256: "0c8368c9b3f0abbc193b9d6133649a614204b528982bebc7026372d61677ce3a"
url: "https://pub.dev"
source: hosted
version: "3.3.7"
args:
dependency: transitive
description:
name: args
sha256: "4cab82a83ffef80b262ddedf47a0a8e56ee6fbf7fe21e6e768b02792034dd440"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "2.4.0"
async:
......@@ -70,7 +78,7 @@ packages:
description:
name: async
sha256: bfe67ef28df125b7dddcea62755991f807aa39a2492a23e1550161692950bbe0
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "2.10.0"
babstrap_settings_screen:
......@@ -78,7 +86,7 @@ packages:
description:
name: babstrap_settings_screen
sha256: "02457a286837d3b701db4b317a08c24b185cf5945a734122c143e7ce78030399"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "0.1.5+1"
bindings_compatible:
......@@ -86,7 +94,7 @@ packages:
description:
name: bindings_compatible
sha256: "5dd5189f7512aff8ec180a8a11bd59230aa34a2d743e65e427192b7292a78d87"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "1.0.1"
boolean_selector:
......@@ -94,7 +102,7 @@ packages:
description:
name: boolean_selector
sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "2.1.1"
bruno:
......@@ -102,7 +110,7 @@ packages:
description:
name: bruno
sha256: "18866ef04d470876dc2434eb44c2ec3c2213ef354f734f8f99cfabee93fd4027"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "3.3.0"
bubble:
......@@ -110,7 +118,7 @@ packages:
description:
name: bubble
sha256: "65b992b8f8ba2e7e2871190cbdfaa0818b6de2f340bef37cb5ee1b61debe0226"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "1.2.1"
cached_network_image:
......@@ -118,7 +126,7 @@ packages:
description:
name: cached_network_image
sha256: fd3d0dc1d451f9a252b32d95d3f0c3c487bc41a75eba2e6097cb0b9c71491b15
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "3.2.3"
cached_network_image_platform_interface:
......@@ -126,7 +134,7 @@ packages:
description:
name: cached_network_image_platform_interface
sha256: bb2b8403b4ccdc60ef5f25c70dead1f3d32d24b9d6117cfc087f496b178594a7
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "2.0.0"
cached_network_image_web:
......@@ -134,7 +142,7 @@ packages:
description:
name: cached_network_image_web
sha256: b8eb814ebfcb4dea049680f8c1ffb2df399e4d03bf7a352c775e26fa06e02fa0
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "1.0.2"
card_swiper:
......@@ -142,7 +150,7 @@ packages:
description:
name: card_swiper
sha256: "0c94c538f47be1dab52d018d4900a7046b4cb0700dc7f95b8628da89d1212b35"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "2.0.4"
characters:
......@@ -150,7 +158,7 @@ packages:
description:
name: characters
sha256: e6a326c8af69605aec75ed6c187d06b349707a27fbff8222ca9cc2cff167975c
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "1.2.1"
clipboard:
......@@ -158,7 +166,7 @@ packages:
description:
name: clipboard
sha256: "2ec38f0e59878008ceca0ab122e4bfde98847f88ef0f83331362ba4521f565a9"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "0.1.3"
clock:
......@@ -166,7 +174,7 @@ packages:
description:
name: clock
sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "1.1.1"
collection:
......@@ -174,7 +182,7 @@ packages:
description:
name: collection
sha256: cfc915e6923fe5ce6e153b0723c753045de46de1b4d63771530504004a45fae0
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "1.17.0"
connectivity_plus:
......@@ -182,7 +190,7 @@ packages:
description:
name: connectivity_plus
sha256: d73575bb66216738db892f72ba67dc478bd3b5490fbbcf43644b57645eabc822
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "3.0.4"
connectivity_plus_platform_interface:
......@@ -190,7 +198,7 @@ packages:
description:
name: connectivity_plus_platform_interface
sha256: cf1d1c28f4416f8c654d7dc3cd638ec586076255d407cef3ddbdaf178272a71a
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "1.2.4"
contact_picker_platform_interface:
......@@ -198,7 +206,7 @@ packages:
description:
name: contact_picker_platform_interface
sha256: "40847ffa0f6e6755c0047e8ef35c4b622a2b053f41ef175d22c19f03984a9ed1"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "4.7.0"
contact_picker_web:
......@@ -206,7 +214,7 @@ packages:
description:
name: contact_picker_web
sha256: "13e739a6ce8f3286e441028dec5967b90fd2d5ceaec53045ae054b030877fe31"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "4.7.0"
convert:
......@@ -214,7 +222,7 @@ packages:
description:
name: convert
sha256: "0f08b14755d163f6e2134cb58222dd25ea2a2ee8a195e53983d57c075324d592"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "3.1.1"
cookie_jar:
......@@ -222,7 +230,7 @@ packages:
description:
name: cookie_jar
sha256: d1cc6516a190ba667941f722b6365d202caff3dacb38de24268b8d6ff1ec8a1d
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "3.0.1"
crisp:
......@@ -230,7 +238,7 @@ packages:
description:
name: crisp
sha256: "3e866046776d65f9745e9845e4c348fcebdf7ca067009deb4554950fd41bedad"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "0.3.1"
cross_file:
......@@ -238,7 +246,7 @@ packages:
description:
name: cross_file
sha256: "0b0036e8cccbfbe0555fd83c1d31a6f30b77a96b598b35a5d36dd41f718695e9"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "0.3.3+4"
crypto:
......@@ -246,7 +254,7 @@ packages:
description:
name: crypto
sha256: aa274aa7774f8964e4f4f38cc994db7b6158dd36e9187aaceaddc994b35c6c67
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "3.0.2"
csslib:
......@@ -254,7 +262,7 @@ packages:
description:
name: csslib
sha256: b36c7f7e24c0bdf1bf9a3da461c837d1de64b9f8beb190c9011d8c72a3dfd745
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "0.17.2"
cupertino_icons:
......@@ -262,7 +270,7 @@ packages:
description:
name: cupertino_icons
sha256: e35129dc44c9118cee2a5603506d823bab99c68393879edb440e0090d07586be
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "1.0.5"
curved_navigation_bar:
......@@ -270,7 +278,7 @@ packages:
description:
name: curved_navigation_bar
sha256: ea6412d00c5d83501bbf1cf9d1ac2ff11a20fbaf910c103c95ace7de82910334
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "1.0.3"
custom_pop_up_menu:
......@@ -278,7 +286,7 @@ packages:
description:
name: custom_pop_up_menu
sha256: eeac484c6ddffffb25e803dc2a5cc9381e700a29f074e9fcc76fe36b62fde850
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "1.2.4"
dash_chat_2:
......@@ -286,7 +294,7 @@ packages:
description:
name: dash_chat_2
sha256: "7ffdeb023fb2c9e194e2147ef8e967d36e4481493178051ceb36d98c62396ddd"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "0.0.15"
dbus:
......@@ -294,7 +302,7 @@ packages:
description:
name: dbus
sha256: "6f07cba3f7b3448d42d015bfd3d53fe12e5b36da2423f23838efc1d5fb31a263"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "0.7.8"
device_info_plus:
......@@ -302,7 +310,7 @@ packages:
description:
name: device_info_plus
sha256: "435383ca05f212760b0a70426b5a90354fe6bd65992b3a5e27ab6ede74c02f5c"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "8.2.0"
device_info_plus_platform_interface:
......@@ -310,7 +318,7 @@ packages:
description:
name: device_info_plus_platform_interface
sha256: d3b01d5868b50ae571cd1dc6e502fc94d956b665756180f7b16ead09e836fd64
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "7.0.0"
diffutil_dart:
......@@ -318,7 +326,7 @@ packages:
description:
name: diffutil_dart
sha256: e0297e4600b9797edff228ed60f4169a778ea357691ec98408fa3b72994c7d06
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "3.0.0"
dio:
......@@ -326,7 +334,7 @@ packages:
description:
name: dio
sha256: "7d328c4d898a61efc3cd93655a0955858e29a0aa647f0f9e02d59b3bb275e2e8"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "4.0.6"
dio_cookie_manager:
......@@ -334,7 +342,7 @@ packages:
description:
name: dio_cookie_manager
sha256: ed7ee3ba6cdb54599c8984d5a4ce09675c553ead6c28608eb54e38eec5b4f954
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "2.0.0"
easy_container:
......@@ -342,7 +350,7 @@ packages:
description:
name: easy_container
sha256: b3264401acca9c6a512e4221169b619320e489451bae2213832aee68fb741196
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "1.0.4+1"
equatable:
......@@ -350,7 +358,7 @@ packages:
description:
name: equatable
sha256: c2b87cb7756efdf69892005af546c56c0b5037f54d2a88269b4f347a505e3ca2
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "2.0.5"
eventsource:
......@@ -358,7 +366,7 @@ packages:
description:
name: eventsource
sha256: e21d60cd2320df8c8c303ebe11c80aa96b10928f411a12be31215062d8091be0
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "0.4.0"
extended_phone_number_input:
......@@ -366,7 +374,7 @@ packages:
description:
name: extended_phone_number_input
sha256: af41a682b115e50d5d11259628e9d3e0677cf966d4b639cf5ab2b2b7f06f612d
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "1.0.2"
fake_async:
......@@ -374,7 +382,7 @@ packages:
description:
name: fake_async
sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "1.3.1"
ffi:
......@@ -382,7 +390,7 @@ packages:
description:
name: ffi
sha256: a38574032c5f1dd06c4aee541789906c12ccaab8ba01446e800d9c5b79c4a978
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "2.0.1"
file:
......@@ -390,7 +398,7 @@ packages:
description:
name: file
sha256: "1b92bec4fc2a72f59a8e15af5f52cd441e4a7860b49499d69dfa817af20e925d"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "6.1.4"
file_picker:
......@@ -398,39 +406,39 @@ packages:
description:
name: file_picker
sha256: dcde5ad1a0cebcf3715ea3f24d0db1888bf77027a26c77d7779e8ef63b8ade62
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "5.2.9"
firebase_auth:
dependency: transitive
description:
name: firebase_auth
sha256: "3d33d6646f08407122cd2cbd292d274b98035d93f59c9e341ba992ebefd59ffa"
url: "https://pub.flutter-io.cn"
sha256: e5254a39daab8c5bc76b17f5a161c11a7a97a3718cd314f460e2b4366c850c7d
url: "https://pub.dev"
source: hosted
version: "4.4.0"
version: "4.4.1"
firebase_auth_platform_interface:
dependency: transitive
description:
name: firebase_auth_platform_interface
sha256: "5d5f283517ba34afd69ef448cc81ea23bcf8887393bedae4f70f45060b045fb9"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "6.13.0"
firebase_auth_web:
dependency: transitive
description:
name: firebase_auth_web
sha256: f50f7026b95c62dba3f0b28bdb3ab3601ea402b4908c1469103f16ae2b0f5281
url: "https://pub.flutter-io.cn"
sha256: c631ec90d05c990fe971774ff12e96ee88fc3dd22839d5cab3b04c8693859116
url: "https://pub.dev"
source: hosted
version: "5.3.0"
version: "5.3.1"
firebase_core:
dependency: transitive
description:
name: firebase_core
sha256: ed611fb8e67e43ecc7956f242cecca383d87cf71aace27287aa5dd4bdba4ac07
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "2.9.0"
firebase_core_platform_interface:
......@@ -438,7 +446,7 @@ packages:
description:
name: firebase_core_platform_interface
sha256: "0df0a064ab0cad7f8836291ca6f3272edd7b83ad5b3540478ee46a0849d8022b"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "4.6.0"
firebase_core_web:
......@@ -446,7 +454,7 @@ packages:
description:
name: firebase_core_web
sha256: "347351a8f0518f3343d79a9a0690fa67ad232fc32e2ea270677791949eac792b"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "2.3.0"
firebase_phone_auth_handler:
......@@ -454,7 +462,7 @@ packages:
description:
name: firebase_phone_auth_handler
sha256: "586e69d6a14eb1276634bbf73a1ede598e85e14e95ea887c67e6d9c62fb6e821"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "1.0.8"
fluro:
......@@ -462,7 +470,7 @@ packages:
description:
name: fluro
sha256: "24d07d0b285b213ec2045b83e85d076185fa5c23651e44dae0ac6755784b97d0"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "2.0.5"
flutter:
......@@ -475,7 +483,7 @@ packages:
description:
name: flutter_barrage
sha256: "43851d3cc998dfc9b43ef38fba5dcf523342da28aa346f421a84943bd81746e6"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "0.5.2"
flutter_blurhash:
......@@ -483,7 +491,7 @@ packages:
description:
name: flutter_blurhash
sha256: "05001537bd3fac7644fa6558b09ec8c0a3f2eba78c0765f88912882b1331a5c6"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "0.7.0"
flutter_cache_manager:
......@@ -491,7 +499,7 @@ packages:
description:
name: flutter_cache_manager
sha256: "32cd900555219333326a2d0653aaaf8671264c29befa65bbd9856d204a4c9fb3"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "3.3.0"
flutter_chat_types:
......@@ -499,7 +507,7 @@ packages:
description:
name: flutter_chat_types
sha256: "34d1d61e46d5ca15f3b46e72d0a9ac98da72edc5eb5bf644a26e27351c9e15ba"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "3.6.0"
flutter_chat_ui:
......@@ -507,7 +515,7 @@ packages:
description:
name: flutter_chat_ui
sha256: f13c48d06dd8be0d2feb0356a22d1cb6a0f83873b923b8d32bb4b55efb07cd39
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "1.6.6"
flutter_client_sse:
......@@ -515,7 +523,7 @@ packages:
description:
name: flutter_client_sse
sha256: "3a234480f529240401dc063a205a36ddce71b36e37f373e54ea6dd380e31bbbb"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "1.0.0"
flutter_easyloading:
......@@ -523,7 +531,7 @@ packages:
description:
name: flutter_easyloading
sha256: ba21a3c883544e582f9cc455a4a0907556714e1e9cf0eababfcb600da191d17c
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "3.0.5"
flutter_easyrefresh:
......@@ -531,7 +539,7 @@ packages:
description:
name: flutter_easyrefresh
sha256: "5d161ee5dcac34da9065116568147d742dd25fb9bff3b10024d9054b195087ad"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "2.2.2"
flutter_icmp_ping:
......@@ -539,7 +547,7 @@ packages:
description:
name: flutter_icmp_ping
sha256: a06c2255a857c8f9d1b0a68f546b113557e48e7a543f91e38bd66aeab296f3a6
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "3.1.2"
flutter_icons:
......@@ -547,7 +555,7 @@ packages:
description:
name: flutter_icons
sha256: ad1c830f729c71216372d1a8d62c08c6dd792227d9492d5130aea5e391210a9f
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "1.1.0"
flutter_inapp_purchase:
......@@ -555,7 +563,7 @@ packages:
description:
name: flutter_inapp_purchase
sha256: "976ef76b594c2e004c932207c5c4537f666ac1e9a622033f59a5a038bab8b80b"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "5.4.1"
flutter_inappwebview:
......@@ -563,7 +571,7 @@ packages:
description:
name: flutter_inappwebview
sha256: f73505c792cf083d5566e1a94002311be497d984b5607f25be36d685cf6361cf
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "5.7.2+3"
flutter_keyboard_visibility:
......@@ -571,7 +579,7 @@ packages:
description:
name: flutter_keyboard_visibility
sha256: "86b71bbaffa38e885f5c21b1182408b9be6951fd125432cf6652c636254cef2d"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "5.4.0"
flutter_keyboard_visibility_linux:
......@@ -579,7 +587,7 @@ packages:
description:
name: flutter_keyboard_visibility_linux
sha256: "6fba7cd9bb033b6ddd8c2beb4c99ad02d728f1e6e6d9b9446667398b2ac39f08"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "1.0.0"
flutter_keyboard_visibility_macos:
......@@ -587,7 +595,7 @@ packages:
description:
name: flutter_keyboard_visibility_macos
sha256: c5c49b16fff453dfdafdc16f26bdd8fb8d55812a1d50b0ce25fc8d9f2e53d086
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "1.0.0"
flutter_keyboard_visibility_platform_interface:
......@@ -595,7 +603,7 @@ packages:
description:
name: flutter_keyboard_visibility_platform_interface
sha256: e43a89845873f7be10cb3884345ceb9aebf00a659f479d1c8f4293fcb37022a4
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "2.0.0"
flutter_keyboard_visibility_web:
......@@ -603,7 +611,7 @@ packages:
description:
name: flutter_keyboard_visibility_web
sha256: d3771a2e752880c79203f8d80658401d0c998e4183edca05a149f5098ce6e3d1
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "2.0.0"
flutter_keyboard_visibility_windows:
......@@ -611,7 +619,7 @@ packages:
description:
name: flutter_keyboard_visibility_windows
sha256: fc4b0f0b6be9b93ae527f3d527fb56ee2d918cd88bbca438c478af7bcfd0ef73
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "1.0.0"
flutter_link_previewer:
......@@ -619,7 +627,7 @@ packages:
description:
name: flutter_link_previewer
sha256: d495edef667d4b5db37fb6f31571406c137161a8399dd44a5de4ce2a7c7ba529
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "3.2.0"
flutter_linkify:
......@@ -627,7 +635,7 @@ packages:
description:
name: flutter_linkify
sha256: c89fe74de985ec22f23d3538d2249add085a4f37ac1c29fd79e1a207efb81d63
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "5.0.2"
flutter_lints:
......@@ -635,7 +643,7 @@ packages:
description:
name: flutter_lints
sha256: aeb0b80a8b3709709c9cc496cdc027c5b3216796bc0af0ce1007eaf24464fd4c
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "2.0.1"
flutter_localizations:
......@@ -648,7 +656,7 @@ packages:
description:
name: flutter_login
sha256: "574a91bb078ac89b67b55ff21c61b496b602133b86fd83873e3c5f3ad0f1eff0"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "3.2.0"
flutter_markdown:
......@@ -656,15 +664,23 @@ packages:
description:
name: flutter_markdown
sha256: "7b25c10de1fea883f3c4f9b8389506b54053cd00807beab69fd65c8653a2711f"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "0.6.14"
flutter_native_splash:
dependency: "direct main"
description:
name: flutter_native_splash
sha256: af665ef80a213a9ed502845a3d7a61b9acca4100ee7e9f067a7440bc3acd6730
url: "https://pub.dev"
source: hosted
version: "2.2.19"
flutter_parsed_text:
dependency: transitive
description:
name: flutter_parsed_text
sha256: "529cf5793b7acdf16ee0f97b158d0d4ba0bf06e7121ef180abe1a5b59e32c1e2"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "2.2.1"
flutter_persistent_keyboard_height:
......@@ -672,7 +688,7 @@ packages:
description:
name: flutter_persistent_keyboard_height
sha256: "3d30b09397dcaf6a914effbb6c566299f148d282e79b2f27f354c97ad3d49df3"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "1.0.5"
flutter_plugin_android_lifecycle:
......@@ -680,7 +696,7 @@ packages:
description:
name: flutter_plugin_android_lifecycle
sha256: c224ac897bed083dabf11f238dd11a239809b446740be0c2044608c50029ffdf
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "2.0.9"
flutter_rating_bar:
......@@ -688,7 +704,7 @@ packages:
description:
name: flutter_rating_bar
sha256: d2af03469eac832c591a1eba47c91ecc871fe5708e69967073c043b2d775ed93
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "4.0.1"
flutter_screenutil:
......@@ -696,7 +712,7 @@ packages:
description:
name: flutter_screenutil
sha256: "0a122936b450324cbdfd51be0819cc6fcebb093eb65585e9cd92263f7a1a8a39"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "5.7.0"
flutter_signin_button:
......@@ -704,7 +720,7 @@ packages:
description:
name: flutter_signin_button
sha256: a063ecc5d5308377e103c9c3a89084abf15fca4440636233af6a13abacd5dcae
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "2.0.0"
flutter_spinkit:
......@@ -712,7 +728,7 @@ packages:
description:
name: flutter_spinkit
sha256: "77a2117c0517ff909221f3160b8eb20052ab5216107581168af574ac1f05dff8"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "5.1.0"
flutter_staggered_animations:
......@@ -720,7 +736,7 @@ packages:
description:
name: flutter_staggered_animations
sha256: "81d3c816c9bb0dca9e8a5d5454610e21ffb068aedb2bde49d2f8d04f75538351"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "1.1.1"
flutter_staggered_grid_view:
......@@ -728,7 +744,7 @@ packages:
description:
name: flutter_staggered_grid_view
sha256: "1312314293acceb65b92754298754801b0e1f26a1845833b740b30415bbbcf07"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "0.6.2"
flutter_tags:
......@@ -736,7 +752,7 @@ packages:
description:
name: flutter_tags
sha256: e958c478aac3e5ac0132d1e9f14a5f0713543edf62c83f801d9815f255036c8e
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "0.4.9+1"
flutter_test:
......@@ -749,7 +765,7 @@ packages:
description:
name: flutter_tts
sha256: e91ad17793ad12cca9c3066accf99ceb353bf0355ad06b767176f178b5c428f6
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "3.6.3"
flutter_vibrate:
......@@ -757,7 +773,7 @@ packages:
description:
name: flutter_vibrate
sha256: "9cc9b32cf52c90dd34c1cf396ed40010b2c74e69adbb0ff16005afa900971ad8"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "1.3.0"
flutter_web_plugins:
......@@ -770,7 +786,7 @@ packages:
description:
name: fluttercontactpicker
sha256: cddd2ba4631f97927adb59c53a529ee8f965e8685eded66a6d5988347aef6ec4
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "4.7.0"
fluttertoast:
......@@ -778,15 +794,23 @@ packages:
description:
name: fluttertoast
sha256: "2f9c4d3f4836421f7067a28f8939814597b27614e021da9d63e5d3fb6e212d25"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "8.2.1"
fluwx:
dependency: "direct main"
description:
name: fluwx
sha256: "485b19e75f78d1b2ba867bc36d9e726fd236de6fb0f7587e5eaa840e1bef1a4c"
url: "https://pub.dev"
source: hosted
version: "3.13.1"
font_awesome_flutter:
dependency: transitive
description:
name: font_awesome_flutter
sha256: "1f93e5799f0e6c882819e8393a05c6ca5226010f289190f2242ec19f3f0fdba5"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "9.2.0"
get:
......@@ -794,7 +818,7 @@ packages:
description:
name: get
sha256: "2ba20a47c8f1f233bed775ba2dd0d3ac97b4cf32fc17731b3dfc672b06b0e92a"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "4.6.5"
glass_kit:
......@@ -802,7 +826,7 @@ packages:
description:
name: glass_kit
sha256: "51b8c7dd78d4abb6ae2cdf75aed282bfc6f910ea1b259da9c72a6fd32bb34c72"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "2.0.1"
glassmorphism:
......@@ -810,7 +834,7 @@ packages:
description:
name: glassmorphism
sha256: c0f65ea2681d4ee6d4125b947946d983335cd44765e835cdc039894b076a6e31
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "3.0.0"
glassy:
......@@ -818,7 +842,7 @@ packages:
description:
name: glassy
sha256: "4f6abc6525de013f7f6cf6c6fb0a6c6250a1f012cc0adbda01e7eb9ef0b82885"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "0.0.6"
gradient_borders:
......@@ -826,7 +850,7 @@ packages:
description:
name: gradient_borders
sha256: "69eeaff519d145a4c6c213ada1abae386bcc8981a4970d923e478ce7ba19e309"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "1.0.0"
gradient_widgets:
......@@ -834,7 +858,7 @@ packages:
description:
name: gradient_widgets
sha256: d337a8a329da9aefa50b82155d11875c1b9992982f65d15c805aa057a2670536
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "0.6.0"
highlight:
......@@ -842,7 +866,7 @@ packages:
description:
name: highlight
sha256: "5353a83ffe3e3eca7df0abfb72dcf3fa66cc56b953728e7113ad4ad88497cf21"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "0.7.0"
html:
......@@ -850,7 +874,7 @@ packages:
description:
name: html
sha256: "79d498e6d6761925a34ee5ea8fa6dfef38607781d2fa91e37523474282af55cb"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "0.15.2"
http:
......@@ -858,7 +882,7 @@ packages:
description:
name: http
sha256: "6aa2946395183537c8b880962d935877325d6a09a2867c3970c05c0fed6ac482"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "0.13.5"
http_parser:
......@@ -866,31 +890,39 @@ packages:
description:
name: http_parser
sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "4.0.2"
image:
dependency: transitive
description:
name: image
sha256: "483a389d6ccb292b570c31b3a193779b1b0178e7eb571986d9a49904b6861227"
url: "https://pub.dev"
source: hosted
version: "4.0.15"
image_picker:
dependency: "direct main"
description:
name: image_picker
sha256: "8b0efbf350ba4f2be1531d629396a994983d0c02f4a82a128aed84d954b90cfa"
url: "https://pub.flutter-io.cn"
sha256: f202f5d730eb8219e35e80c4461fb3a779940ad30ce8fde1586df756e3af25e6
url: "https://pub.dev"
source: hosted
version: "0.8.7+2"
version: "0.8.7+3"
image_picker_android:
dependency: transitive
description:
name: image_picker_android
sha256: dfb5b0f28b8786fcc662b7ed42bfb4b82a6cbbd74da1958384b10d40bdf212a7
url: "https://pub.flutter-io.cn"
sha256: "1ea6870350f56af8dab716459bd9d5dc76947e29e07a2ba1d0c172eaaf4f269c"
url: "https://pub.dev"
source: hosted
version: "0.8.6+6"
version: "0.8.6+7"
image_picker_for_web:
dependency: transitive
description:
name: image_picker_for_web
sha256: "98f50d6b9f294c8ba35e25cc0d13b04bfddd25dbc8d32fa9d566a6572f2c081c"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "2.1.12"
image_picker_ios:
......@@ -898,7 +930,7 @@ packages:
description:
name: image_picker_ios
sha256: a1546ff5861fc15812953d4733b520c3d371cec3d2859a001ff04c46c4d81883
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "0.8.7+3"
image_picker_platform_interface:
......@@ -906,7 +938,7 @@ packages:
description:
name: image_picker_platform_interface
sha256: "1991219d9dbc42a99aff77e663af8ca51ced592cd6685c9485e3458302d3d4f8"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "2.6.3"
intl:
......@@ -914,7 +946,7 @@ packages:
description:
name: intl
sha256: "910f85bce16fb5c6f614e117efa303e85a1731bb0081edf3604a2ae6e9a3cc91"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "0.17.0"
intl_phone_field:
......@@ -922,7 +954,7 @@ packages:
description:
name: intl_phone_field
sha256: "0d2b35d148ed28a454d50797e6c2fb297f0a295feab84641b02d3dd32294b3f3"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "3.1.0"
js:
......@@ -930,7 +962,7 @@ packages:
description:
name: js
sha256: "5528c2f391ededb7775ec1daa69e65a2d61276f7552de2b5f7b8d34ee9fd4ab7"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "0.6.5"
json_annotation:
......@@ -938,7 +970,7 @@ packages:
description:
name: json_annotation
sha256: c33da08e136c3df0190bd5bbe51ae1df4a7d96e7954d1d7249fea2968a72d317
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "4.8.0"
json_dynamic_form:
......@@ -946,15 +978,23 @@ packages:
description:
name: json_dynamic_form
sha256: "239ab6dfc687662ee83ac4e07fda66c838ed745caeb11b45fe3ac0263123707c"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "1.0.0"
keyboard_actions:
dependency: "direct main"
description:
name: keyboard_actions
sha256: "31e0ab2a706ac8f58887efa60efc1f19aecdf37d8ab0f665a0f156d1fbeab650"
url: "https://pub.dev"
source: hosted
version: "4.2.0"
keyboard_utils:
dependency: transitive
description:
name: keyboard_utils
sha256: a76f5ab7f755a6d85d8e50729a1b7523af3a7dd9d5a262f30ba73c81148e48a8
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "1.3.4"
linkify:
......@@ -962,7 +1002,7 @@ packages:
description:
name: linkify
sha256: bdfbdafec6cdc9cd0ebb333a868cafc046714ad508e48be8095208c54691d959
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "4.1.0"
lints:
......@@ -970,7 +1010,7 @@ packages:
description:
name: lints
sha256: "5e4a9cd06d447758280a8ac2405101e0e2094d2a1dbdd3756aec3fe7775ba593"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "2.0.1"
loading_animation_widget:
......@@ -978,7 +1018,7 @@ packages:
description:
name: loading_animation_widget
sha256: "1901682600273a966c34cf44a85fc5355da92a8d08a8a43c11adc4e471993e3a"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "1.2.0+4"
logging:
......@@ -986,7 +1026,7 @@ packages:
description:
name: logging
sha256: "04094f2eb032cbb06c6f6e8d3607edcfcb0455e2bb6cbc010cb01171dcb64e6d"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "1.1.1"
lpinyin:
......@@ -994,7 +1034,7 @@ packages:
description:
name: lpinyin
sha256: "0bb843363f1f65170efd09fbdfc760c7ec34fc6354f9fcb2f89e74866a0d814a"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "2.0.3"
markdown:
......@@ -1002,7 +1042,7 @@ packages:
description:
name: markdown
sha256: d95a9d12954aafc97f984ca29baaa7690ed4d9ec4140a23ad40580bcdb6c87f5
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "7.0.2"
matcher:
......@@ -1010,7 +1050,7 @@ packages:
description:
name: matcher
sha256: "16db949ceee371e9b99d22f88fa3a73c4e59fd0afed0bd25fc336eb76c198b72"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "0.12.13"
material_color_utilities:
......@@ -1018,7 +1058,7 @@ packages:
description:
name: material_color_utilities
sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "0.2.0"
meta:
......@@ -1026,7 +1066,7 @@ packages:
description:
name: meta
sha256: "6c268b42ed578a53088d834796959e4a1814b5e9e164f147f580a386e5decf42"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "1.8.0"
mime:
......@@ -1034,7 +1074,7 @@ packages:
description:
name: mime
sha256: e4ff8e8564c03f255408decd16e7899da1733852a9110a58fe6d1b817684a63e
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "1.0.4"
modal_bottom_sheet:
......@@ -1042,7 +1082,7 @@ packages:
description:
name: modal_bottom_sheet
sha256: ef533916a2c3089571c32bd34e410faca77a6849a3f28f748e0794525c5658a0
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "2.1.2"
nested:
......@@ -1050,7 +1090,7 @@ packages:
description:
name: nested
sha256: "03bac4c528c64c95c722ec99280375a6f2fc708eec17c7b3f07253b626cd2a20"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "1.0.0"
nm:
......@@ -1058,7 +1098,7 @@ packages:
description:
name: nm
sha256: "2c9aae4127bdc8993206464fcc063611e0e36e72018696cd9631023a31b24254"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "0.5.0"
octo_image:
......@@ -1066,7 +1106,7 @@ packages:
description:
name: octo_image
sha256: "107f3ed1330006a3bea63615e81cf637433f5135a52466c7caa0e7152bca9143"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "1.0.2"
open_filex:
......@@ -1074,7 +1114,7 @@ packages:
description:
name: open_filex
sha256: "854aefd72dfd74219dc8c8d1767c34ec1eae64b8399a5be317bddb1ec2108915"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "4.3.2"
package_info:
......@@ -1082,7 +1122,7 @@ packages:
description:
name: package_info
sha256: "6c07d9d82c69e16afeeeeb6866fe43985a20b3b50df243091bfc4a4ad2b03b75"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "2.0.2"
path:
......@@ -1090,7 +1130,7 @@ packages:
description:
name: path
sha256: db9d4f58c908a4ba5953fcee2ae317c94889433e5024c27ce74a37f94267945b
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "1.8.2"
path_drawing:
......@@ -1098,7 +1138,7 @@ packages:
description:
name: path_drawing
sha256: bbb1934c0cbb03091af082a6389ca2080345291ef07a5fa6d6e078ba8682f977
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "1.0.1"
path_parsing:
......@@ -1106,7 +1146,7 @@ packages:
description:
name: path_parsing
sha256: e3e67b1629e6f7e8100b367d3db6ba6af4b1f0bb80f64db18ef1fbabd2fa9ccf
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "1.0.1"
path_provider:
......@@ -1114,23 +1154,23 @@ packages:
description:
name: path_provider
sha256: c7edf82217d4b2952b2129a61d3ad60f1075b9299e629e149a8d2e39c2e6aad4
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "2.0.14"
path_provider_android:
dependency: transitive
description:
name: path_provider_android
sha256: "019f18c9c10ae370b08dce1f3e3b73bc9f58e7f087bb5e921f06529438ac0ae7"
url: "https://pub.flutter-io.cn"
sha256: da97262be945a72270513700a92b39dd2f4a54dad55d061687e2e37a6390366a
url: "https://pub.dev"
source: hosted
version: "2.0.24"
version: "2.0.25"
path_provider_foundation:
dependency: transitive
description:
name: path_provider_foundation
sha256: ad4c4d011830462633f03eb34445a45345673dfd4faf1ab0b4735fbd93b19183
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "2.2.2"
path_provider_linux:
......@@ -1138,7 +1178,7 @@ packages:
description:
name: path_provider_linux
sha256: "2ae08f2216225427e64ad224a24354221c2c7907e448e6e0e8b57b1eb9f10ad1"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "2.1.10"
path_provider_platform_interface:
......@@ -1146,7 +1186,7 @@ packages:
description:
name: path_provider_platform_interface
sha256: "57585299a729335f1298b43245842678cb9f43a6310351b18fb577d6e33165ec"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "2.0.6"
path_provider_windows:
......@@ -1154,7 +1194,7 @@ packages:
description:
name: path_provider_windows
sha256: f53720498d5a543f9607db4b0e997c4b5438884de25b0f73098cc2671a51b130
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "2.1.5"
pedantic:
......@@ -1162,7 +1202,7 @@ packages:
description:
name: pedantic
sha256: "67fc27ed9639506c856c840ccce7594d0bdcd91bc8d53d6e52359449a1d50602"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "1.11.1"
petitparser:
......@@ -1170,7 +1210,7 @@ packages:
description:
name: petitparser
sha256: "49392a45ced973e8d94a85fdb21293fbb40ba805fc49f2965101ae748a3683b4"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "5.1.0"
phone_number_metadata:
......@@ -1178,7 +1218,7 @@ packages:
description:
name: phone_number_metadata
sha256: "32d42fac690951941fe9ddd7fd62e79ea98fab46141ddc9e5f8322885b68f9b0"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "4.0.2"
phone_numbers_parser:
......@@ -1186,7 +1226,7 @@ packages:
description:
name: phone_numbers_parser
sha256: "35eb7499bed3ddce7415c75b9485ffbc5c9d87a5111c81202f64a1f6f040ddf0"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "4.2.1"
photo_view:
......@@ -1194,7 +1234,7 @@ packages:
description:
name: photo_view
sha256: "8036802a00bae2a78fc197af8a158e3e2f7b500561ed23b4c458107685e645bb"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "0.14.0"
pinput:
......@@ -1202,7 +1242,7 @@ packages:
description:
name: pinput
sha256: "1773743c188cdd2f8d0398ea708ec72645bb41ac9311755c4f7bb03a4184bdcf"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "2.2.31"
platform:
......@@ -1210,7 +1250,7 @@ packages:
description:
name: platform
sha256: "4a451831508d7d6ca779f7ac6e212b4023dd5a7d08a27a63da33756410e32b76"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "3.1.0"
playing_cards:
......@@ -1218,7 +1258,7 @@ packages:
description:
name: playing_cards
sha256: b44d29025fa8776daa930dadfdefe6ec426ae2606941c167f7a4a24de29a4e8a
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "0.3.1+9"
plugin_platform_interface:
......@@ -1226,23 +1266,23 @@ packages:
description:
name: plugin_platform_interface
sha256: "6a2128648c854906c53fa8e33986fc0247a1116122f9534dd20e3ab9e16a32bc"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "2.1.4"
pointycastle:
dependency: "direct main"
description:
name: pointycastle
sha256: c3120a968135aead39699267f4c74bc9a08e4e909e86bc1b0af5bfd78691123c
url: "https://pub.flutter-io.cn"
sha256: "7c1e5f0d23c9016c5bbd8b1473d0d3fb3fc851b876046039509e18e0c7485f2c"
url: "https://pub.dev"
source: hosted
version: "3.7.2"
version: "3.7.3"
process:
dependency: transitive
description:
name: process
sha256: "53fd8db9cec1d37b0574e12f07520d582019cb6c44abf5479a01505099a34a09"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "4.2.4"
provider:
......@@ -1250,7 +1290,7 @@ packages:
description:
name: provider
sha256: cdbe7530b12ecd9eb455bdaa2fcb8d4dad22e80b8afb4798b41479d5ce26847f
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "6.0.5"
pull_to_refresh:
......@@ -1258,7 +1298,7 @@ packages:
description:
name: pull_to_refresh
sha256: bbadd5a931837b57739cf08736bea63167e284e71fb23b218c8c9a6e042aad12
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "2.0.0"
quiver:
......@@ -1266,23 +1306,23 @@ packages:
description:
name: quiver
sha256: b1c1ac5ce6688d77f65f3375a9abb9319b3cb32486bdc7a1e0fdf004d7ba4e47
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "3.2.1"
responsive_grid_list:
dependency: "direct main"
description:
name: responsive_grid_list
sha256: "682377659158e46ac7f6b4383b191bfd34ef2c5616046518b58721be370de723"
url: "https://pub.flutter-io.cn"
sha256: "28145c0213a1db4bc01137f20c0d01aa4704d32c5ee6bf042396cf53f82de446"
url: "https://pub.dev"
source: hosted
version: "1.3.1"
version: "1.3.2"
rxdart:
dependency: transitive
description:
name: rxdart
sha256: "0c7c0cedd93788d996e33041ffecda924cc54389199cde4e6a34b440f50044cb"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "0.27.7"
scroll_to_index:
......@@ -1290,7 +1330,7 @@ packages:
description:
name: scroll_to_index
sha256: b707546e7500d9f070d63e5acf74fd437ec7eeeb68d3412ef7b0afada0b4f176
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "3.0.1"
share_plus:
......@@ -1298,7 +1338,7 @@ packages:
description:
name: share_plus
sha256: "692261968a494e47323dcc8bc66d8d52e81bc27cb4b808e4e8d7e8079d4cc01a"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "6.3.2"
share_plus_platform_interface:
......@@ -1306,7 +1346,7 @@ packages:
description:
name: share_plus_platform_interface
sha256: "0c6e61471bd71b04a138b8b588fa388e66d8b005e6f2deda63371c5c505a0981"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "3.2.1"
shared_preferences:
......@@ -1314,23 +1354,23 @@ packages:
description:
name: shared_preferences
sha256: "858aaa72d8f61637d64e776aca82e1c67e6d9ee07979123c5d17115031c1b13b"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "2.1.0"
shared_preferences_android:
dependency: transitive
description:
name: shared_preferences_android
sha256: "8304d8a1f7d21a429f91dee552792249362b68a331ac5c3c1caf370f658873f6"
url: "https://pub.flutter-io.cn"
sha256: "7fa90471a6875d26ad78c7e4a675874b2043874586891128dc5899662c97db46"
url: "https://pub.dev"
source: hosted
version: "2.1.0"
version: "2.1.2"
shared_preferences_foundation:
dependency: transitive
description:
name: shared_preferences_foundation
sha256: "0c1c16c56c9708aa9c361541a6f0e5cc6fc12a3232d866a687a7b7db30032b07"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "2.2.1"
shared_preferences_linux:
......@@ -1338,7 +1378,7 @@ packages:
description:
name: shared_preferences_linux
sha256: "9d387433ca65717bbf1be88f4d5bb18f10508917a8fa2fb02e0fd0d7479a9afa"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "2.2.0"
shared_preferences_platform_interface:
......@@ -1346,7 +1386,7 @@ packages:
description:
name: shared_preferences_platform_interface
sha256: fb5cf25c0235df2d0640ac1b1174f6466bd311f621574997ac59018a6664548d
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "2.2.0"
shared_preferences_web:
......@@ -1354,7 +1394,7 @@ packages:
description:
name: shared_preferences_web
sha256: "74083203a8eae241e0de4a0d597dbedab3b8fef5563f33cf3c12d7e93c655ca5"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "2.1.0"
shared_preferences_windows:
......@@ -1362,7 +1402,7 @@ packages:
description:
name: shared_preferences_windows
sha256: "5e588e2efef56916a3b229c3bfe81e6a525665a454519ca51dbcc4236a274173"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "2.2.0"
sign_in_with_apple:
......@@ -1370,7 +1410,7 @@ packages:
description:
name: sign_in_with_apple
sha256: ac3b113767dfdd765078c507dad9d4d9fe96b669cc7bd88fc36fc15376fb3400
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "4.3.0"
sign_in_with_apple_platform_interface:
......@@ -1378,7 +1418,7 @@ packages:
description:
name: sign_in_with_apple_platform_interface
sha256: a5883edee09ed6be19de19e7d9f618a617fe41a6fa03f76d082dfb787e9ea18d
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "1.0.0"
sign_in_with_apple_web:
......@@ -1386,7 +1426,7 @@ packages:
description:
name: sign_in_with_apple_web
sha256: "44b66528f576e77847c14999d5e881e17e7223b7b0625a185417829e5306f47a"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "1.0.1"
sky_engine:
......@@ -1399,23 +1439,23 @@ packages:
description:
name: smart_auth
sha256: "8cfaec55b77d5930ed1666bb7ae70db5bade099bb1422401386853b400962113"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "1.0.8"
smooth_page_indicator:
dependency: "direct main"
description:
name: smooth_page_indicator
sha256: "8c301bc686892306cd41672c1880167f140c16be305d5ede8201fefd9fcda829"
url: "https://pub.flutter-io.cn"
sha256: "725bc638d5e79df0c84658e1291449996943f93bacbc2cec49963dbbab48d8ae"
url: "https://pub.dev"
source: hosted
version: "1.0.1"
version: "1.1.0"
social_login_buttons:
dependency: "direct main"
description:
name: social_login_buttons
sha256: "052b88f1a9fed69430097093c02ed738a0fbf4c5fa4b0ed0ce4e8aa3caf592de"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "1.0.7"
source_span:
......@@ -1423,7 +1463,7 @@ packages:
description:
name: source_span
sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "1.9.1"
speech_to_text:
......@@ -1431,7 +1471,7 @@ packages:
description:
name: speech_to_text
sha256: ff8fbd31d039bdbac6c7ec9f0516d37df2cbea62c45198326d3b64034e6fb920
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "6.1.1"
speech_to_text_macos:
......@@ -1439,7 +1479,7 @@ packages:
description:
name: speech_to_text_macos
sha256: "6b5575e5a8346be1779838b0a482c259474965b5943668830b479147a75b5bfc"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "1.0.2"
speech_to_text_platform_interface:
......@@ -1447,23 +1487,23 @@ packages:
description:
name: speech_to_text_platform_interface
sha256: "13d90215a7554b9a8c1ce47c0a1739af8eacd2cf196ca66351e54dfd2172746d"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "2.0.1"
sqflite:
dependency: transitive
dependency: "direct main"
description:
name: sqflite
sha256: "500d6fec583d2c021f2d25a056d96654f910662c64f836cd2063167b8f1fa758"
url: "https://pub.flutter-io.cn"
sha256: e7dfb6482d5d02b661d0b2399efa72b98909e5aa7b8336e1fb37e226264ade00
url: "https://pub.dev"
source: hosted
version: "2.2.6"
version: "2.2.7"
sqflite_common:
dependency: transitive
description:
name: sqflite_common
sha256: "963dad8c4aa2f814ce7d2d5b1da2f36f31bd1a439d8f27e3dc189bb9d26bc684"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "2.4.3"
stack_trace:
......@@ -1471,7 +1511,7 @@ packages:
description:
name: stack_trace
sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "1.11.0"
stream_channel:
......@@ -1479,7 +1519,7 @@ packages:
description:
name: stream_channel
sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "2.1.1"
string_scanner:
......@@ -1487,7 +1527,7 @@ packages:
description:
name: string_scanner
sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "1.2.0"
sync:
......@@ -1495,7 +1535,7 @@ packages:
description:
name: sync
sha256: f2ebb89eac969abb02b498562a35c4da63d6843396c4fe81948cd06a76845fce
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "0.3.0"
synchronized:
......@@ -1503,7 +1543,7 @@ packages:
description:
name: synchronized
sha256: "33b31b6beb98100bf9add464a36a8dd03eb10c7a8cf15aeec535e9b054aaf04b"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "3.0.1"
term_glyph:
......@@ -1511,7 +1551,7 @@ packages:
description:
name: term_glyph
sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "1.2.1"
test_api:
......@@ -1519,7 +1559,7 @@ packages:
description:
name: test_api
sha256: ad540f65f92caa91bf21dfc8ffb8c589d6e4dc0c2267818b4cc2792857706206
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "0.4.16"
typed_data:
......@@ -1527,15 +1567,23 @@ packages:
description:
name: typed_data
sha256: "26f87ade979c47a150c9eaab93ccd2bebe70a27dc0b4b29517f2904f04eb11a5"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "1.3.1"
universal_io:
dependency: transitive
description:
name: universal_io
sha256: "06866290206d196064fd61df4c7aea1ffe9a4e7c4ccaa8fcded42dd41948005d"
url: "https://pub.dev"
source: hosted
version: "2.2.0"
universal_platform:
dependency: transitive
description:
name: universal_platform
sha256: d315be0f6641898b280ffa34e2ddb14f3d12b1a37882557869646e0cc363d0cc
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "1.0.0+1"
url_launcher:
......@@ -1543,7 +1591,7 @@ packages:
description:
name: url_launcher
sha256: "75f2846facd11168d007529d6cd8fcb2b750186bea046af9711f10b907e1587e"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "6.1.10"
url_launcher_android:
......@@ -1551,7 +1599,7 @@ packages:
description:
name: url_launcher_android
sha256: a52628068d282d01a07cd86e6ba99e497aa45ce8c91159015b2416907d78e411
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "6.0.27"
url_launcher_ios:
......@@ -1559,7 +1607,7 @@ packages:
description:
name: url_launcher_ios
sha256: "9af7ea73259886b92199f9e42c116072f05ff9bea2dcb339ab935dfc957392c2"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "6.1.4"
url_launcher_linux:
......@@ -1567,7 +1615,7 @@ packages:
description:
name: url_launcher_linux
sha256: "206fb8334a700ef7754d6a9ed119e7349bc830448098f21a69bf1b4ed038cabc"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "3.0.4"
url_launcher_macos:
......@@ -1575,7 +1623,7 @@ packages:
description:
name: url_launcher_macos
sha256: "91ee3e75ea9dadf38036200c5d3743518f4a5eb77a8d13fda1ee5764373f185e"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "3.0.5"
url_launcher_platform_interface:
......@@ -1583,7 +1631,7 @@ packages:
description:
name: url_launcher_platform_interface
sha256: "6c9ca697a5ae218ce56cece69d46128169a58aa8653c1b01d26fcd4aad8c4370"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "2.1.2"
url_launcher_web:
......@@ -1591,7 +1639,7 @@ packages:
description:
name: url_launcher_web
sha256: "81fe91b6c4f84f222d186a9d23c73157dc4c8e1c71489c4d08be1ad3b228f1aa"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "2.0.16"
url_launcher_windows:
......@@ -1599,7 +1647,7 @@ packages:
description:
name: url_launcher_windows
sha256: a83ba3607a507758669cfafb03f9de09bf6e6280c14d9b9cb18f013e406dcacd
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "3.0.5"
uuid:
......@@ -1607,7 +1655,7 @@ packages:
description:
name: uuid
sha256: "648e103079f7c64a36dc7d39369cabb358d377078a051d6ae2ad3aa539519313"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "3.0.7"
vector_math:
......@@ -1615,7 +1663,7 @@ packages:
description:
name: vector_math
sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "2.1.4"
vibration:
......@@ -1623,7 +1671,7 @@ packages:
description:
name: vibration
sha256: "1dc9d1a0d62b12f1276eb7146b21585db5fe01771b8ca0234fefdf74ba51f963"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "1.7.6"
video_player:
......@@ -1631,7 +1679,7 @@ packages:
description:
name: video_player
sha256: de95f0e9405f29b5582573d4166132e71f83b3158aac14e8ee5767a54f4f1fbd
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "2.6.1"
video_player_android:
......@@ -1639,7 +1687,7 @@ packages:
description:
name: video_player_android
sha256: a592048a711d5739d9cea2255d425779f138d41095b9149bda60ce4bc1af8871
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "2.4.4"
video_player_avfoundation:
......@@ -1647,7 +1695,7 @@ packages:
description:
name: video_player_avfoundation
sha256: "75c6d68cd479a25f34d635149ba6887bc8f1b2b2921841121fd44ea0c5bc1927"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "2.4.4"
video_player_platform_interface:
......@@ -1655,7 +1703,7 @@ packages:
description:
name: video_player_platform_interface
sha256: a8c4dcae2a7a6e7cc1d7f9808294d968eca1993af34a98e95b9bdfa959bec684
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "6.1.0"
video_player_web:
......@@ -1663,7 +1711,7 @@ packages:
description:
name: video_player_web
sha256: "44ce41424d104dfb7cf6982cc6b84af2b007a24d126406025bf40de5d481c74c"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "2.0.16"
visibility_detector:
......@@ -1671,7 +1719,7 @@ packages:
description:
name: visibility_detector
sha256: "15c54a459ec2c17b4705450483f3d5a2858e733aee893dcee9d75fd04814940d"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "0.3.3"
webview_flutter:
......@@ -1679,39 +1727,39 @@ packages:
description:
name: webview_flutter
sha256: "47663d51a9061451aa3880a214ee9a65dcbb933b77bc44388e194279ab3ccaf6"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "4.0.7"
webview_flutter_android:
dependency: transitive
description:
name: webview_flutter_android
sha256: "5906c9aa8c88ed372b2ad3c88c942790b4fb16f73fdd1c0647b4d747d9cf5b3f"
url: "https://pub.flutter-io.cn"
sha256: "489c4162cbddea9116a9622f0f881c3cc26317d119322150d7608f2223ffa72d"
url: "https://pub.dev"
source: hosted
version: "3.4.5"
version: "3.5.2"
webview_flutter_platform_interface:
dependency: transitive
description:
name: webview_flutter_platform_interface
sha256: "6341f92977609be71391f4d4dcd64bfaa8ac657af1dfb2e231b5c1724e8c6c36"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "2.2.0"
webview_flutter_wkwebview:
dependency: transitive
description:
name: webview_flutter_wkwebview
sha256: "9a78d963cce191dd6a9df547301fc5c008bf3dae95a323ec281fff1284e0a037"
url: "https://pub.flutter-io.cn"
sha256: "2ef3f65fd49061c18e4d837a411308f2850417f2d0a7c11aad2c3857bee12c18"
url: "https://pub.dev"
source: hosted
version: "3.2.4"
version: "3.3.0"
win32:
dependency: transitive
description:
name: win32
sha256: a6f0236dbda0f63aa9a25ad1ff9a9d8a4eaaa5012da0dc59d21afdb1dc361ca4
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "3.1.4"
xdg_directories:
......@@ -1719,7 +1767,7 @@ packages:
description:
name: xdg_directories
sha256: ee1505df1426458f7f60aac270645098d318a8b4766d85fde75f76f2e21807d1
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "1.0.0"
xml:
......@@ -1727,9 +1775,17 @@ packages:
description:
name: xml
sha256: "979ee37d622dec6365e2efa4d906c37470995871fe9ae080d967e192d88286b5"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "6.2.2"
yaml:
dependency: transitive
description:
name: yaml
sha256: "23812a9b125b48d4007117254bca50abb6c712352927eece9e155207b1db2370"
url: "https://pub.dev"
source: hosted
version: "3.1.1"
sdks:
dart: ">=2.19.0 <3.0.0"
flutter: ">=3.7.0"
......@@ -128,9 +128,10 @@ dependencies:
speech_to_text: ^6.1.1
flutter_persistent_keyboard_height: ^1.0.5
bruno: ^3.3.0
keyboard_actions: ^4.2.0
sqflite: ^2.2.7
fluwx: ^3.13.1
flutter_native_splash: ^2.2.19
# package:bubble/bubble.dart
dev_dependencies:
......@@ -200,3 +201,142 @@ flutter:
#
# For details regarding fonts from package dependencies,
# see https://flutter.dev/custom-fonts/#from-packages
flutter_native_splash:
# This package generates native code to customize Flutter's default white native splash screen
# with background color and splash image.
# Customize the parameters below, and run the following command in the terminal:
# flutter pub run flutter_native_splash:create
# To restore Flutter's default white splash screen, run the following command in the terminal:
# flutter pub run flutter_native_splash:remove
# color or background_image is the only required parameter. Use color to set the background
# of your splash screen to a solid color. Use background_image to set the background of your
# splash screen to a png image. This is useful for gradients. The image will be stretch to the
# size of the app. Only one parameter can be used, color and background_image cannot both be set.
color: "#e1f5fe"
#background_image: "assets/background.png"
# Optional parameters are listed below. To enable a parameter, uncomment the line by removing
# the leading # character.
# The image parameter allows you to specify an image used in the splash screen. It must be a
# png file and should be sized for 4x pixel density.
image: assets/images/logo_icon.png
# The branding property allows you to specify an image used as branding in the splash screen.
# It must be a png file. It is supported for Android, iOS and the Web. For Android 12,
# see the Android 12 section below.
#branding: assets/dart.png
# To position the branding image at the bottom of the screen you can use bottom, bottomRight,
# and bottomLeft. The default values is bottom if not specified or specified something else.
#branding_mode: bottom
# The color_dark, background_image_dark, image_dark, branding_dark are parameters that set the background
# and image when the device is in dark mode. If they are not specified, the app will use the
# parameters from above. If the image_dark parameter is specified, color_dark or
# background_image_dark must be specified. color_dark and background_image_dark cannot both be
# set.
color_dark: "#042a49"
#background_image_dark: "assets/dark-background.png"
image_dark: assets/images/logo_icon.png
#branding_dark: assets/dart_dark.png
# Android 12 handles the splash screen differently than previous versions. Please visit
# https://developer.android.com/guide/topics/ui/splash-screen
# Following are Android 12 specific parameter.
android_12:
# The image parameter sets the splash screen icon image. If this parameter is not specified,
# the app's launcher icon will be used instead.
# Please note that the splash screen will be clipped to a circle on the center of the screen.
# App icon with an icon background: This should be 960×960 pixels, and fit within a circle
# 640 pixels in diameter.
# App icon without an icon background: This should be 1152×1152 pixels, and fit within a circle
# 768 pixels in diameter.
image: assets/images/logo_icon.png
# Splash screen background color.
color: "#42a5f5"
# App icon background color.
icon_background_color: "#eeeeee"
# The branding property allows you to specify an image used as branding in the splash screen.
#branding: assets/dart.png
# The image_dark, color_dark, icon_background_color_dark, and branding_dark set values that
# apply when the device is in dark mode. If they are not specified, the app will use the
# parameters from above.
#image_dark: assets/android12splash-invert.png
#color_dark: "#042a49"
#icon_background_color_dark: "#111111"
# The android, ios and web parameters can be used to disable generating a splash screen on a given
# platform.
#android: false
#ios: false
#web: false
# Platform specific images can be specified with the following parameters, which will override
# the respective parameter. You may specify all, selected, or none of these parameters:
#color_android: "#42a5f5"
#color_dark_android: "#042a49"
#color_ios: "#42a5f5"
#color_dark_ios: "#042a49"
#color_web: "#42a5f5"
#color_dark_web: "#042a49"
#image_android: assets/splash-android.png
#image_dark_android: assets/splash-invert-android.png
#image_ios: assets/splash-ios.png
#image_dark_ios: assets/splash-invert-ios.png
#image_web: assets/splash-web.png
#image_dark_web: assets/splash-invert-web.png
#background_image_android: "assets/background-android.png"
#background_image_dark_android: "assets/dark-background-android.png"
#background_image_ios: "assets/background-ios.png"
#background_image_dark_ios: "assets/dark-background-ios.png"
#background_image_web: "assets/background-web.png"
#background_image_dark_web: "assets/dark-background-web.png"
#branding_android: assets/brand-android.png
#branding_dark_android: assets/dart_dark-android.png
#branding_ios: assets/brand-ios.png
#branding_dark_ios: assets/dart_dark-ios.png
# The position of the splash image can be set with android_gravity, ios_content_mode, and
# web_image_mode parameters. All default to center.
#
# android_gravity can be one of the following Android Gravity (see
# https://developer.android.com/reference/android/view/Gravity): bottom, center,
# center_horizontal, center_vertical, clip_horizontal, clip_vertical, end, fill, fill_horizontal,
# fill_vertical, left, right, start, or top.
#android_gravity: center
#
# ios_content_mode can be one of the following iOS UIView.ContentMode (see
# https://developer.apple.com/documentation/uikit/uiview/contentmode): scaleToFill,
# scaleAspectFit, scaleAspectFill, center, top, bottom, left, right, topLeft, topRight,
# bottomLeft, or bottomRight.
#ios_content_mode: center
#
# web_image_mode can be one of the following modes: center, contain, stretch, and cover.
#web_image_mode: center
# The screen orientation can be set in Android with the android_screen_orientation parameter.
# Valid parameters can be found here:
# https://developer.android.com/guide/topics/manifest/activity-element#screen
#android_screen_orientation: sensorLandscape
# To hide the notification bar, use the fullscreen parameter. Has no effect in web since web
# has no notification bar. Defaults to false.
# NOTE: Unlike Android, iOS will not automatically show the notification bar when the app loads.
# To show the notification bar, add the following code to your Flutter app:
# WidgetsFlutterBinding.ensureInitialized();
# SystemChrome.setEnabledSystemUIOverlays([SystemUiOverlay.bottom, SystemUiOverlay.top]);
fullscreen: true
# If you have changed the name(s) of your info.plist file(s), you can specify the filename(s)
# with the info_plist_files parameter. Remove only the # characters in the three lines below,
# do not remove any spaces:
#info_plist_files:
# - 'ios/Runner/Info-Debug.plist'
# - 'ios/Runner/Info-Release.plist'
\ No newline at end of file
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment