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

update

parent 3699105f
def localProperties = new Properties() def localProperties = new Properties()
def localPropertiesFile = rootProject.file('local.properties') def localPropertiesFile = rootProject.file('local.properties')
def keystorePropertiesFile = rootProject.file("key.properties")
def keystoreProperties = new Properties() def keystoreProperties = new Properties()
keystoreProperties.load(new FileInputStream(keystorePropertiesFile)) def keystorePropertiesFile = rootProject.file('key.properties')
if (keystorePropertiesFile.exists()) {
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
}
if (localPropertiesFile.exists()) { if (localPropertiesFile.exists()) {
localPropertiesFile.withReader('UTF-8') { reader -> localPropertiesFile.withReader('UTF-8') { reader ->
...@@ -58,25 +60,38 @@ android { ...@@ -58,25 +60,38 @@ android {
versionName flutterVersionName versionName flutterVersionName
} }
// signingConfigs {
// release {
// keyAlias keystoreProperties['keyAlias']
// keyPassword keystoreProperties['keyPassword']
// storeFile file(keystoreProperties['storeFile'])
// storePassword keystoreProperties['storePassword']
// }
// }
signingConfigs { signingConfigs {
release { release {
keyAlias keystoreProperties['keyAlias'] keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword'] keyPassword keystoreProperties['keyPassword']
storeFile file(keystoreProperties['storeFile']) storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
storePassword keystoreProperties['storePassword'] storePassword keystoreProperties['storePassword']
} }
} }
buildTypes { buildTypes {
release { release {
signingConfig signingConfigs.debug signingConfig signingConfigs.release
// signingConfig signingConfigs.release //TODO
// TODO: Add your own signing config for the release build.
// Signing with the debug keys for now, so `flutter run --release` works.
//
} }
} }
// buildTypes {
// // release {
// // signingConfig signingConfigs.debug
// // // signingConfig signingConfigs.release //TODO
// // // TODO: Add your own signing config for the release build.
// // // Signing with the debug keys for now, so `flutter run --release` works.
// // //
// // }
// }
} }
flutter { flutter {
......
buildscript { buildscript {
ext.kotlin_version = '1.6.10' ext.kotlin_version = '1.6.20'
repositories { repositories {
google() google()
mavenCentral() mavenCentral()
......
{ {
"images" : [ "images" : [
{ {
"filename" : "logo-removebg-preview (4) 1.png", "filename" : "launchimag.png",
"idiom" : "universal", "idiom" : "universal",
"scale" : "1x" "scale" : "1x"
}, },
{ {
"filename" : "logo-removebg-preview (4) 2.png", "filename" : "launchimag2x.png",
"idiom" : "universal", "idiom" : "universal",
"scale" : "2x" "scale" : "2x"
}, },
{ {
"filename" : "logo-removebg-preview (4).png", "filename" : "launchimag3x.png",
"idiom" : "universal", "idiom" : "universal",
"scale" : "3x" "scale" : "3x"
} }
......
...@@ -21,7 +21,9 @@ class UserStore extends GetxController { ...@@ -21,7 +21,9 @@ class UserStore extends GetxController {
// 令牌 token // 令牌 token
String token = ''; String token = '';
// 用户 profile // 用户 profile
final _profile = IntegralEntity(id: '', token: '', username: '').obs; final _profile = IntegralEntity(
id: '', token: '', username: '', integral: 0, expireTime: null)
.obs;
bool get isLogin => _isLogin.value; bool get isLogin => _isLogin.value;
IntegralEntity get profile => _profile.value; IntegralEntity get profile => _profile.value;
...@@ -34,8 +36,21 @@ class UserStore extends GetxController { ...@@ -34,8 +36,21 @@ class UserStore extends GetxController {
var profileOffline = StorageService.to.getString(STORAGE_USER_PROFILE_KEY); var profileOffline = StorageService.to.getString(STORAGE_USER_PROFILE_KEY);
if (profileOffline.isNotEmpty) { if (profileOffline.isNotEmpty) {
var l = jsonDecode(profileOffline); var l = jsonDecode(profileOffline);
Map<String, dynamic> map = json.decode(l);
_profile.value = _profile(IntegralEntity.fromMap(map)); final copiedMap = Map.from(l);
// Map<String, dynamic> map = json.decode(l);
copiedMap.update("expireTime",
(value) => value == null ? null : DateTime?.parse(value));
// copiedMap
final value = IntegralEntity(
expireTime: copiedMap['expireTime'],
id: copiedMap['id'],
token: copiedMap['token'],
username: copiedMap['username'],
integral: copiedMap['integral']);
_profile.value = _profile(value);
if (profile.id != '') { if (profile.id != '') {
_isLogin.value = true; _isLogin.value = true;
...@@ -49,8 +64,13 @@ class UserStore extends GetxController { ...@@ -49,8 +64,13 @@ class UserStore extends GetxController {
handleLogin(IntegralEntity res) async { handleLogin(IntegralEntity res) async {
await setToken(res.token); await setToken(res.token);
// IntegralEntity userInfo = await UserAPI.getUserIntegral(); // IntegralEntity userInfo = await UserAPI.getUserIntegral();
await getUserInfo( await getUserInfo(IntegralEntity(
IntegralEntity(id: res.id, username: res.username, token: res.token)); id: res.id,
username: res.username,
token: res.token,
integral: res.integral,
expireTime: res.expireTime,
));
_isLogin.value = true; _isLogin.value = true;
Get.back(); Get.back();
// Get.put(ApplicationController()); // Get.put(ApplicationController());
...@@ -59,7 +79,7 @@ class UserStore extends GetxController { ...@@ -59,7 +79,7 @@ class UserStore extends GetxController {
getUserInfo(IntegralEntity userInfo) async { getUserInfo(IntegralEntity userInfo) async {
await setToken(userInfo.token); await setToken(userInfo.token);
_profile.value = userInfo;
await saveProfile(userInfo); await saveProfile(userInfo);
// token = StorageService.to.getString(STORAGE_USER_TOKEN_KEY); // token = StorageService.to.getString(STORAGE_USER_TOKEN_KEY);
...@@ -95,7 +115,13 @@ class UserStore extends GetxController { ...@@ -95,7 +115,13 @@ class UserStore extends GetxController {
// 保存 profile // 保存 profile
Future<void> saveProfile(IntegralEntity profile) async { Future<void> saveProfile(IntegralEntity profile) async {
StorageService.to.setString(STORAGE_USER_PROFILE_KEY, jsonEncode(profile)); _profile.value = profile;
var copiedMap = Map.from(profile.toMap());
copiedMap.update("expireTime", (value) => value?.toIso8601String());
StorageService.to
.setString(STORAGE_USER_PROFILE_KEY, jsonEncode(copiedMap));
} }
// // 保存 profile // // 保存 profile
// Future<void> saveProfile(UserLoginResponseEntity profile) async { // Future<void> saveProfile(UserLoginResponseEntity profile) async {
...@@ -109,9 +135,8 @@ class UserStore extends GetxController { ...@@ -109,9 +135,8 @@ class UserStore extends GetxController {
await StorageService.to.remove(STORAGE_USER_TOKEN_KEY); await StorageService.to.remove(STORAGE_USER_TOKEN_KEY);
_isLogin.value = false; _isLogin.value = false;
token = ''; token = '';
saveProfile(IntegralEntity(
_profile.value = IntegralEntity(id: '', username: '', token: ''); id: '', username: '', token: '', expireTime: null, integral: 0));
saveProfile(IntegralEntity(id: '', username: '', token: ''));
Get.toNamed(AppRoutes.Application); Get.toNamed(AppRoutes.Application);
} }
} }
// baidu yapi // baidu yapi
// const SERVER_API_URL = 'https://yapi.baidu.com/mock/41008'; // const SERVER_API_URL = 'https://yapi.baidu.com/mock/41008';
// const SERVER_API_URL = 'https://yapi.ducafecat.tech/mock/11'; // const SERVER_API_URL = 'https://yapi.ducafecat.tech/mock/11';
const SERVER_API_URL = 'http://101.34.153.228:8083/api'; const SERVER_API_URL = 'http://101.34.153.228:8083/api';//线上
// const SERVER_API_URL = 'http://192.168.2.178:8083/api'; // const SERVER_API_URL = 'http://192.168.2.178:8083/api';
// const SERVER_API_URL = 'http://192.168.110.57:8083/api'; // const SERVER_API_URL = 'http://192.168.110.57:8083/api';
// //
......
...@@ -5,26 +5,42 @@ ...@@ -5,26 +5,42 @@
import 'dart:convert'; import 'dart:convert';
class LoginEntity { class LoginEntity {
LoginEntity({required this.username, required this.id, required this.token}); var expireTime;
LoginEntity(
{required this.username,
required this.id,
required this.integral,
required this.token,
this.expireTime});
final String username; final String username;
final int id; final int id;
final String token; final String token;
// final DateTime expireTime;
final int integral;
factory LoginEntity.fromJson(String str) => factory LoginEntity.fromJson(String str) =>
LoginEntity.fromMap(json.decode(str)); LoginEntity.fromMap(json.decode(str));
String toJson() => json.encode(toMap()); String toJson() => json.encode(toMap());
// jsonData['uploadedDate'] != null
// ? DateTime.parse(jsonData['uploadedDate'].toString()).toLocal()
// : null,
factory LoginEntity.fromMap(Map<String, dynamic> json) => LoginEntity( factory LoginEntity.fromMap(Map<String, dynamic> json) => LoginEntity(
username: json["username"], username: json["username"],
id: json["id"], id: json["id"],
token: json['token'], token: json['token'],
integral: json['integral'],
expireTime: json['expireTime'] != null
? DateTime.parse(json["expireTime"])
: null,
); );
Map<String, dynamic> toMap() => { Map<String, dynamic> toMap() => {
"username": username, "username": username,
"id": id, "id": id,
"token": token, "token": token,
"expireTime": expireTime,
"integral": integral
}; };
} }
...@@ -103,11 +103,19 @@ class UserEntity { ...@@ -103,11 +103,19 @@ class UserEntity {
class IntegralEntity { class IntegralEntity {
IntegralEntity( IntegralEntity(
{required this.id, required this.username, required this.token}); {required this.id,
required this.username,
required this.token,
required this.expireTime,
required this.integral});
final dynamic id; final dynamic id;
final String username; final String username;
final String token; final String token;
final dynamic expireTime;
final int integral;
// expireTime: res.expireTime,
// integral: res.integral
factory IntegralEntity.fromJson(String str) => factory IntegralEntity.fromJson(String str) =>
IntegralEntity.fromMap(json.decode(str)); IntegralEntity.fromMap(json.decode(str));
...@@ -115,10 +123,19 @@ class IntegralEntity { ...@@ -115,10 +123,19 @@ class IntegralEntity {
String toJson() => json.encode(toMap()); String toJson() => json.encode(toMap());
factory IntegralEntity.fromMap(Map<String, dynamic> json) => IntegralEntity( factory IntegralEntity.fromMap(Map<String, dynamic> json) => IntegralEntity(
id: json["id"], username: json["username"], token: json['token']); id: json["id"],
username: json["username"],
token: json['token'],
integral: json['integral'],
expireTime: DateTime.parse(json["expireTime"]));
Map<String, dynamic> toMap() => Map<String, dynamic> toMap() => {
{"id": id, "username": username, "token": token}; "id": id,
"username": username,
"token": token,
"integral": integral,
"expireTime": expireTime
};
} }
// To parse this JSON data, do // To parse this JSON data, do
......
...@@ -79,7 +79,6 @@ class PayListController extends GetxController { ...@@ -79,7 +79,6 @@ class PayListController extends GetxController {
_purchaseUpdatedSubscription = _purchaseUpdatedSubscription =
FlutterInappPurchase.purchaseUpdated.listen((productItem) async { FlutterInappPurchase.purchaseUpdated.listen((productItem) async {
print("支付1次");
ApplePayEntity? res = await UserAPI.notifyApplePay({ ApplePayEntity? res = await UserAPI.notifyApplePay({
'receipt': productItem?.transactionReceipt, 'receipt': productItem?.transactionReceipt,
'userId': UserStore.to.profile.id, 'userId': UserStore.to.profile.id,
...@@ -91,8 +90,23 @@ class PayListController extends GetxController { ...@@ -91,8 +90,23 @@ class PayListController extends GetxController {
EasyLoading.showSuccess('${res?.message}'); EasyLoading.showSuccess('${res?.message}');
Vibrate.feedback(FeedbackType.success); Vibrate.feedback(FeedbackType.success);
EasyLoading.dismiss(); EasyLoading.dismiss();
// equired this.id,
// required this.username,
// required this.token,
// required this.expireTime,
// required this.integral
// DateTime.parse(json["expireTime"]))
await UserStore.to.saveProfile(IntegralEntity(
expireTime: res.data['expireTime'] == null
? null
: DateTime.parse(res.data["expireTime"]),
username: res.data['username'],
id: res.data['id'],
integral: res.data['integral'],
token: UserStore.to.token));
Get.back(); Get.back();
await FlutterInappPurchase.instance.clearTransactionIOS();
// Get.offAndToNamed(AppRoutes.Application); // Get.offAndToNamed(AppRoutes.Application);
// Get.put(ApplicationController()); // Get.put(ApplicationController());
} else { } else {
......
...@@ -10,6 +10,8 @@ import 'package:flutter_screenutil/flutter_screenutil.dart'; ...@@ -10,6 +10,8 @@ import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:glassmorphism/glassmorphism.dart'; import 'package:glassmorphism/glassmorphism.dart';
import 'package:url_launcher/url_launcher.dart'; import 'package:url_launcher/url_launcher.dart';
import 'package:flutter_markdown/flutter_markdown.dart';
// import 'package:markdown_widget/markdown_widget.dart';
import 'index.dart'; import 'index.dart';
import 'widgets/widgets.dart'; import 'widgets/widgets.dart';
...@@ -168,14 +170,15 @@ class ProductPage extends GetView<ProductController> { ...@@ -168,14 +170,15 @@ class ProductPage extends GetView<ProductController> {
) )
], ],
) )
: Text( : Markdown(data: "${idx.text}");
"${idx.text}", // Text(
style: TextStyle( // "${idx.text}",
fontSize: 18, // style: TextStyle(
color: Colors.white, // fontSize: 18,
// fontWeight: FontWeight.bold // color: Colors.white,
), // // fontWeight: FontWeight.bold
); // ),
// );
return text; return text;
}).toList(), }).toList(),
......
...@@ -11,6 +11,7 @@ import 'package:chart/common/widgets/widgets.dart'; ...@@ -11,6 +11,7 @@ import 'package:chart/common/widgets/widgets.dart';
import 'package:flutter_easyloading/flutter_easyloading.dart'; import 'package:flutter_easyloading/flutter_easyloading.dart';
import 'package:social_login_buttons/social_login_buttons.dart'; import 'package:social_login_buttons/social_login_buttons.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
// import 'package:fluwx/fluwx.dart';
import '../../../entity/login_entity.dart'; import '../../../entity/login_entity.dart';
import '../../../entity/user_entity.dart'; import '../../../entity/user_entity.dart';
...@@ -46,6 +47,10 @@ class SignInController extends GetxController { ...@@ -46,6 +47,10 @@ class SignInController extends GetxController {
// 密码的控制器 // 密码的控制器
final TextEditingController passController = TextEditingController(); final TextEditingController passController = TextEditingController();
// final a = registerWxApi(
// appId: "wxd930ea5d5a228f5f",
// universalLink: "https://your.univerallink.com/link/");
// print("aaaa");
// final MyRepository repository; // final MyRepository repository;
// SignInController({@required this.repository}) : assert(repository != null); // SignInController({@required this.repository}) : assert(repository != null);
...@@ -69,26 +74,50 @@ class SignInController extends GetxController { ...@@ -69,26 +74,50 @@ class SignInController extends GetxController {
EasyLoading.show(status: '登录中...'); EasyLoading.show(status: '登录中...');
// Map<String, dynamic> routeParams = // Map<String, dynamic> routeParams =
// ModalRoute.of(context)!.settings?.arguments as Map<String, dynamic>; // ModalRoute.of(context)!.settings?.arguments as Map<String, dynamic>;
// final DateTime expireTime;
// final int integral;
try { try {
LoginEntity? res = await UserAPI.login({ LoginEntity? res = await UserAPI.login({
"smsCode": codeController.text, "smsCode": codeController.text,
"phone": mobileMemberController.text, "phone": mobileMemberController.text,
// "id": UserStore.to.profile.id, // "id": UserStore.to.profile.id,
}); });
Vibrate.feedback(FeedbackType.success);
EasyLoading.showSuccess("登录成功");
if (res?.token != null) {
// UserStore.to.handleLogin(res);
EasyLoading.showSuccess("登录成功!");
// Navigator.of(context).pushNamed('/');
} else {
EasyLoading.showError("登录失败");
}
EasyLoading.dismiss(); EasyLoading.dismiss();
UserStore.to.handleLogin(IntegralEntity(
id: res.id,
username: res.username,
token: res.token,
expireTime: res.expireTime,
integral: res.integral));
// appLogin
} catch (e) { } catch (e) {
Vibrate.feedback(FeedbackType.error);
EasyLoading.showError("登录失败"); EasyLoading.showError("登录失败");
EasyLoading.dismiss(); EasyLoading.dismiss();
} }
// try {
// LoginEntity? res = await UserAPI.login({
// "smsCode": codeController.text,
// "phone": mobileMemberController.text,
// // "id": UserStore.to.profile.id,
// });
// if (res?.token != null) {
// // UserStore.to.handleLogin(res);
// EasyLoading.showSuccess("登录成功!");
// // Navigator.of(context).pushNamed('/');
// } else {
// EasyLoading.showError("登录失败");
// }
// EasyLoading.dismiss();
// } catch (e) {
// EasyLoading.showError("登录失败");
// EasyLoading.dismiss();
// }
// UserLoginRequestEntity params = UserLoginRequestEntity( // UserLoginRequestEntity params = UserLoginRequestEntity(
// email: emailController.value.text, // email: emailController.value.text,
...@@ -232,8 +261,12 @@ class SignInController extends GetxController { ...@@ -232,8 +261,12 @@ class SignInController extends GetxController {
EasyLoading.showSuccess("登录成功"); EasyLoading.showSuccess("登录成功");
EasyLoading.dismiss(); EasyLoading.dismiss();
UserStore.to.handleLogin( UserStore.to.handleLogin(IntegralEntity(
IntegralEntity(id: res.id, username: res.username, token: res.token)); id: res.id,
username: res.username,
token: res.token,
expireTime: res.expireTime,
integral: res.integral));
// appLogin // appLogin
} catch (e) { } catch (e) {
......
import 'dart:io';
import 'package:chart/common/routers/routes.dart'; import 'package:chart/common/routers/routes.dart';
import 'package:chart/pages/application/index.dart'; import 'package:chart/pages/application/index.dart';
import 'package:flutter/gestures.dart'; import 'package:flutter/gestures.dart';
...@@ -8,6 +10,7 @@ import 'package:flutter/services.dart'; ...@@ -8,6 +10,7 @@ import 'package:flutter/services.dart';
// import 'package:flutter_icons/flutter_icons.dart'; // import 'package:flutter_icons/flutter_icons.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:glassmorphism/glassmorphism.dart';
import 'package:social_login_buttons/social_login_buttons.dart'; import 'package:social_login_buttons/social_login_buttons.dart';
import 'index.dart'; import 'index.dart';
...@@ -96,7 +99,35 @@ class SignInPage extends GetView<SignInController> { ...@@ -96,7 +99,35 @@ class SignInPage extends GetView<SignInController> {
// 登录表单 // 登录表单
Widget _buildInputForm() { Widget _buildInputForm() {
return Container( return GlassmorphicContainer(
height: 280,
width: double.infinity,
// flex: 1,
borderRadius: 16,
padding: EdgeInsets.only(bottom: 16),
blur: 14,
alignment: Alignment.bottomCenter,
border: 2,
linearGradient: LinearGradient(
begin: Alignment.topLeft,
end: Alignment.bottomRight,
colors: [
Color(0xFF0FFFF).withOpacity(0.2),
Color(0xFF0FFFF).withOpacity(0.2),
],
),
margin: EdgeInsets.only(bottom: 16.h),
borderGradient: LinearGradient(
begin: Alignment.topLeft,
end: Alignment.bottomRight,
colors: [
Color(0xFF0FFFF).withOpacity(1),
Color(0xFFFFFFF),
Color(0xFF0FFFF).withOpacity(1),
],
),
child: Container(
width: 295.w, width: 295.w,
// height: 204, // height: 204,
margin: EdgeInsets.only(top: 49.h), margin: EdgeInsets.only(top: 49.h),
...@@ -174,38 +205,39 @@ class SignInPage extends GetView<SignInController> { ...@@ -174,38 +205,39 @@ class SignInPage extends GetView<SignInController> {
// onPressed: () {}, // onPressed: () {},
// ), // ),
// 注册、登录 横向布局 // 注册、登录 横向布局
// Container( Container(
// height: 44.h, height: 44.h,
// margin: EdgeInsets.only(top: 15.h), margin: EdgeInsets.only(top: 15.h),
// child: btnFlatButtonWidget( child: btnFlatButtonWidget(
// onPressed: controller.signInWithApple, onPressed: controller.handleSignIn,
// // controller.handleSignIn, // controller.handleSignIn,
// gbColor: AppColors.primaryElement, gbColor: AppColors.primaryElement,
// title: "登录", title: "登录",
// ), ),
// ), ),
// Spacer(), // Spacer(),
// Fogot password // Fogot password
Padding( // Padding(
padding: EdgeInsets.only(top: 8.0), // padding: EdgeInsets.only(top: 8.0),
child: TextButton( // child: TextButton(
onPressed: controller.handleFogotPassword, // onPressed: controller.handleFogotPassword,
child: Text( // child: Text(
"忘记密码", // "忘记密码",
textAlign: TextAlign.center, // textAlign: TextAlign.center,
style: TextStyle( // style: TextStyle(
color: AppColors.secondaryElementText, // color: AppColors.secondaryElementText,
fontFamily: "Avenir", // fontFamily: "Avenir",
fontWeight: FontWeight.w400, // fontWeight: FontWeight.w400,
fontSize: 16.sp, // fontSize: 16.sp,
height: 1, // 设置下行高,否则字体下沉 // height: 1, // 设置下行高,否则字体下沉
), // ),
), // ),
), // ),
), // ),
], ],
), ),
),
); );
} }
...@@ -277,7 +309,8 @@ class SignInPage extends GetView<SignInController> { ...@@ -277,7 +309,8 @@ class SignInPage extends GetView<SignInController> {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(
resizeToAvoidBottomInset: false, resizeToAvoidBottomInset: false,
body: Container( body: Platform.isIOS
? Container(
width: double.infinity, width: double.infinity,
height: double.infinity, height: double.infinity,
// ignore: sort_child_properties_last // ignore: sort_child_properties_last
...@@ -323,11 +356,12 @@ class SignInPage extends GetView<SignInController> { ...@@ -323,11 +356,12 @@ class SignInPage extends GetView<SignInController> {
height: 20, height: 20,
), ),
Padding( Padding(
padding: padding: EdgeInsets.symmetric(
EdgeInsets.symmetric(vertical: 20), vertical: 20),
child: RichText( child: RichText(
text: TextSpan( text: TextSpan(
style: DefaultTextStyle.of(context) style:
DefaultTextStyle.of(context)
.style, .style,
children: [ children: [
TextSpan( TextSpan(
...@@ -348,7 +382,8 @@ class SignInPage extends GetView<SignInController> { ...@@ -348,7 +382,8 @@ class SignInPage extends GetView<SignInController> {
recognizer: recognizer:
TapGestureRecognizer() TapGestureRecognizer()
..onTap = () { ..onTap = () {
Get.toNamed(AppRoutes Get.toNamed(
AppRoutes
.PRIVACT); .PRIVACT);
}, },
style: TextStyle( style: TextStyle(
...@@ -370,8 +405,9 @@ class SignInPage extends GetView<SignInController> { ...@@ -370,8 +405,9 @@ class SignInPage extends GetView<SignInController> {
}, },
width: 294, width: 294,
gbColor: AppColors.primaryElement, gbColor: AppColors.primaryElement,
fontColor: AppColors.primaryBackground, fontColor:
title: "同意并继续", AppColors.primaryBackground,
title: "同意并登录",
fontWeight: FontWeight.w500, fontWeight: FontWeight.w500,
fontSize: 16, fontSize: 16,
) )
...@@ -389,12 +425,14 @@ class SignInPage extends GetView<SignInController> { ...@@ -389,12 +425,14 @@ class SignInPage extends GetView<SignInController> {
// controller.signInWithApple // controller.signInWithApple
}, },
), ),
SizedBox( SizedBox(
height: 20, height: 20,
), ),
SocialLoginButton( SocialLoginButton(
text: "不登录使用", text: "不登录使用",
buttonType: SocialLoginButtonType.generalLogin, buttonType:
SocialLoginButtonType.generalLogin,
backgroundColor: AppColors.thirdElement, backgroundColor: AppColors.thirdElement,
onPressed: () async { onPressed: () async {
Get.back(); Get.back();
...@@ -403,6 +441,17 @@ class SignInPage extends GetView<SignInController> { ...@@ -403,6 +441,17 @@ class SignInPage extends GetView<SignInController> {
// await Get.offAndToNamed( // await Get.offAndToNamed(
// AppRoutes.Application); // AppRoutes.Application);
// }), // }),
// SizedBox(
// height: 20,
// ),
// SocialLoginButton(
// text: "微信登录",
// buttonType:
// SocialLoginButtonType.generalLogin,
// backgroundColor: AppColors.thirdElement,
// onPressed: () async {
// Get.back();
// }),
], ],
)), )),
), ),
...@@ -415,17 +464,25 @@ class SignInPage extends GetView<SignInController> { ...@@ -415,17 +464,25 @@ class SignInPage extends GetView<SignInController> {
image: Image.asset("assets/images/bg2.png").image, image: Image.asset("assets/images/bg2.png").image,
fit: BoxFit.cover), fit: BoxFit.cover),
)) ))
: Container(
// child: Column( padding: EdgeInsets.symmetric(horizontal: 16),
// children: <Widget>[ decoration: BoxDecoration(
image: DecorationImage(
image: Image.asset("assets/images/bg2.png").image,
fit: BoxFit.cover),
),
child: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
_buildInputForm(),
// _buildLogo(), // _buildLogo(),
// _buildInputForm(), // _buildInputForm(),
// Spacer(), // Spacer(),
// _buildThirdPartyLogin(), // _buildThirdPartyLogin(),
// // _buildSignupButton(), // _buildSignupButton(),
// ], ],
// ), )),
));
);
} }
} }
...@@ -89,21 +89,10 @@ class SiperBannerWidget extends GetView<MainController> { ...@@ -89,21 +89,10 @@ class SiperBannerWidget extends GetView<MainController> {
], ],
), ),
height: 70, height: 70,
width: double.infinity, width: Get.mediaQuery.size.width,
child: Padding( child: Container(
padding: const EdgeInsets.symmetric(horizontal: 14), padding: EdgeInsets.symmetric(horizontal: 16),
child: GestureDetector( child: GestureDetector(
// onTap: () => {
// // Navigator.of(context).pushNamed("/chat",
// // arguments: {"question": message.question})
// // Navigator.push(context, MaterialPageRoute(builder: (context) {
// // return ChatPage();
// // }))
// // Navigator.of(context).pop({'id': "1"})
// // print("${message.question}")
// },
child: InkWell(
onTap: () { onTap: () {
Vibrate.feedback(FeedbackType.impact); Vibrate.feedback(FeedbackType.impact);
// message.question // message.question
...@@ -122,70 +111,82 @@ class SiperBannerWidget extends GetView<MainController> { ...@@ -122,70 +111,82 @@ class SiperBannerWidget extends GetView<MainController> {
createdAt: DateTime.now(), createdAt: DateTime.now(),
)); ));
}, },
child: Row( // child: Expanded(
children: [ // child: Row(
Container( // mainAxisAlignment: MainAxisAlignment.center,
padding: const EdgeInsets.all(14), // children: [
decoration: BoxDecoration( // Container(
gradient: LinearGradient( // padding: const EdgeInsets.all(14),
begin: Alignment.topLeft, // margin: const EdgeInsets.only(right: 14),
end: Alignment.bottomRight, // decoration: BoxDecoration(
colors: [ // gradient: LinearGradient(
kCategoriesPrimaryColor[index], // begin: Alignment.topLeft,
kCategoriesSecondryColor[index], // end: Alignment.bottomRight,
], // colors: [
), // kCategoriesPrimaryColor[index],
borderRadius: BorderRadius.circular(16)), // kCategoriesSecondryColor[index],
child: const Icon( // ],
Icons.headset_mic, // ),
size: 20, // borderRadius: BorderRadius.circular(16)),
color: Colors.white, // child: const Icon(
), // Icons.headset_mic,
), // size: 20,
const SizedBox(width: 11), // color: Colors.white,
Column( // ),
mainAxisAlignment: MainAxisAlignment.center, // ),
crossAxisAlignment: CrossAxisAlignment.start, // Expanded(
children: [ // child: Column(
const SizedBox(height: 15), // mainAxisAlignment: MainAxisAlignment.center,
Text( // crossAxisAlignment: CrossAxisAlignment.start,
message.question, // children: [
// ignore: prefer_const_constructors // SizedBox(
style: TextStyle( // height: 10,
fontSize: 14, // ),
fontWeight: FontWeight.bold, // Expanded(
color: Colors.white), // child: Container(
), // padding: const EdgeInsets.only(right: 10),
const SizedBox(height: 5), // child: Text(
Expanded( // message.question,
child: SizedBox( // softWrap: true,
width: 200, // textAlign: TextAlign.left,
child: Text( // overflow: TextOverflow.ellipsis,
message.resp, // // ignore: prefer_const_constructors
maxLines: 1, // style: TextStyle(
// ignore: prefer_const_constructors // fontSize: 14,
style: TextStyle( // fontWeight: FontWeight.bold,
fontSize: 14, // color: Colors.white),
decoration: TextDecoration.none, // ),
color: Colors.white, // )),
), // Expanded(
// child: SizedBox(
overflow: TextOverflow.ellipsis, // child: Text(
// message.resp,
// softWrap: true, // softWrap: true,
// textAlign: TextAlign.left, // textAlign: TextAlign.left,
// overflow: TextOverflow.ellipsis, // overflow: TextOverflow.ellipsis,
// maxLines: 1, // maxLines: 1,
// // ignore: prefer_const_constructors
// style: TextStyle( // style: TextStyle(
// color: Colors.black.withOpacity(0.48), fontSize: 12), // fontSize: 14,
)), // decoration: TextDecoration.none,
), // color: Colors.white,
], // ),
), // // softWrap: true,
], // // textAlign: TextAlign.left,
), // // overflow: TextOverflow.ellipsis,
// // maxLines: 1,
// // style: TextStyle(
// // color: Colors.black.withOpacity(0.48), fontSize: 12),
// )),
// ),
// ],
// ),
// )
// ],
// ),
// ),
), ),
)), )),
),
); );
} }
} }
......
...@@ -101,7 +101,7 @@ class UserDetailPage extends GetView<UserDetailController> { ...@@ -101,7 +101,7 @@ class UserDetailPage extends GetView<UserDetailController> {
height: 1.5, height: 1.5,
fontWeight: FontWeight.bold), fontWeight: FontWeight.bold),
), ),
margin: EdgeInsets.only(right: 16), // margin: EdgeInsets.only(right: 16),
)), )),
Container( Container(
width: 60, width: 60,
...@@ -116,69 +116,97 @@ class UserDetailPage extends GetView<UserDetailController> { ...@@ -116,69 +116,97 @@ class UserDetailPage extends GetView<UserDetailController> {
), ),
) )
]), ]),
Row(children: [ Row(
Container( mainAxisAlignment: MainAxisAlignment.center,
children: [
Obx(() => Container(
// width: 80, // width: 80,
height: 25, // height: 25,
padding: EdgeInsets.symmetric( padding: EdgeInsets.symmetric(
horizontal: 10, vertical: 4), horizontal: 10, vertical: 4),
margin: EdgeInsets.only(top: 16), margin: EdgeInsets.only(top: 16),
decoration: BoxDecoration( decoration: BoxDecoration(
// rgba(233, 234, 244, 1.00) // rgba(233, 234, 244, 1.00)
color: Color.fromRGBO(255, 255, 255, .2), color:
Color.fromRGBO(255, 255, 255, .2),
borderRadius: BorderRadius.circular(20), borderRadius: BorderRadius.circular(20),
// image: DecorationImage( // image: DecorationImage(
// image: Image.asset("assets/images/vip6.png") // image: Image.asset("assets/images/vip6.png")
// .image, // .image,
// fit: BoxFit.contain), // fit: BoxFit.contain),
), ),
child: Row(children: [ child: c.profile.expireTime != null
? Row(
mainAxisAlignment:
MainAxisAlignment.center,
children: [
Image.asset( Image.asset(
"assets/images/jifen.png", "assets/images/jifen.png",
fit: BoxFit.cover, fit: BoxFit.cover,
height: 20,
), ),
Container( Text(
margin: EdgeInsets.only(left: 5), "会员日期至:${c.profile.expireTime.year}-${c.profile.expireTime.month}-${c.profile.expireTime.day}",
child: Text(
"100",
style: TextStyle( style: TextStyle(
color: color: Color.fromRGBO(
Color.fromRGBO(255, 255, 255, 1)), 255, 255, 255, 1)),
),
) )
]), ],
), )
Container( : Row(
// width: 80, mainAxisAlignment:
height: 25, MainAxisAlignment.center,
padding: EdgeInsets.symmetric( children: [
horizontal: 10, vertical: 4),
margin: EdgeInsets.only(top: 16, left: 16),
decoration: BoxDecoration(
// rgba(233, 234, 244, 1.00)
color: Color.fromRGBO(255, 255, 255, .2),
borderRadius: BorderRadius.circular(20),
// image: DecorationImage(
// image: Image.asset("assets/images/vip6.png")
// .image,
// fit: BoxFit.contain),
),
child: Row(children: [
Image.asset( Image.asset(
"assets/images/jifen1.png", "assets/images/jifen1.png",
fit: BoxFit.cover, fit: BoxFit.cover,
height: 20,
), ),
Container( Text(
margin: EdgeInsets.only(left: 5), "积分剩余:",
child: Text(
"300",
style: TextStyle( style: TextStyle(
color: color: Color.fromRGBO(
Color.fromRGBO(255, 255, 255, 1)), 255, 255, 255, 1)),
),
Text(
"${c.profile.integral}",
style: TextStyle(
color: Color.fromRGBO(
255, 255, 255, 1)),
), ),
)
]), ]),
) )),
// Container(
// // width: 80,
// height: 25,
// padding: EdgeInsets.symmetric(
// horizontal: 10, vertical: 4),
// margin: EdgeInsets.only(top: 16, left: 16),
// decoration: BoxDecoration(
// // rgba(233, 234, 244, 1.00)
// color: Color.fromRGBO(255, 255, 255, .2),
// borderRadius: BorderRadius.circular(20),
// // image: DecorationImage(
// // image: Image.asset("assets/images/vip6.png")
// // .image,
// // fit: BoxFit.contain),
// ),
// child: Row(children: [
// Image.asset(
// "assets/images/jifen1.png",
// fit: BoxFit.cover,
// ),
// Container(
// margin: EdgeInsets.only(left: 5),
// child: Text(
// "300",
// style: TextStyle(
// color:
// Color.fromRGBO(255, 255, 255, 1)),
// ),
// )
// ]),
// )
]) ])
], ],
), ),
......
...@@ -438,6 +438,13 @@ packages: ...@@ -438,6 +438,13 @@ packages:
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "3.2.0" version: "3.2.0"
flutter_markdown:
dependency: "direct main"
description:
name: flutter_markdown
url: "https://pub.dartlang.org"
source: hosted
version: "0.6.14"
flutter_parsed_text: flutter_parsed_text:
dependency: transitive dependency: transitive
description: description:
...@@ -686,6 +693,13 @@ packages: ...@@ -686,6 +693,13 @@ packages:
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.0.1" version: "2.0.1"
markdown:
dependency: transitive
description:
name: markdown
url: "https://pub.dartlang.org"
source: hosted
version: "7.0.1"
matcher: matcher:
dependency: transitive dependency: transitive
description: description:
......
...@@ -110,6 +110,8 @@ dependencies: ...@@ -110,6 +110,8 @@ dependencies:
sign_in_with_apple: ^4.3.0 sign_in_with_apple: ^4.3.0
flutter_vibrate: ^1.3.0 flutter_vibrate: ^1.3.0
social_login_buttons: ^1.0.7 social_login_buttons: ^1.0.7
flutter_markdown: ^0.6.14
# package:bubble/bubble.dart # package:bubble/bubble.dart
dev_dependencies: dev_dependencies:
......
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