界面优化,增加十几种特权图片

This commit is contained in:
CYH 2023-10-10 09:14:18 +08:00
parent a542c979a8
commit a417a5cc69
13 changed files with 159 additions and 89 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 587 KiB

View File

@ -771,7 +771,7 @@ class _CirclePageState extends State<CirclePage>
}, },
child: Image.asset( child: Image.asset(
getCircleImage('icon_screen'), getCircleImage('icon_screen'),
width: 24.sp, width: 30.sp,
), ),
), ),
), ),

View File

@ -310,6 +310,7 @@ class _DiscoverState extends State<Discover>
child: Swiper( child: Swiper(
autoplay: autoplay:
user.images!.length == 1 ? false : true, user.images!.length == 1 ? false : true,
loop: user.images!.length == 1 ? false : true,
itemBuilder: itemBuilder:
(BuildContext context, int index) { (BuildContext context, int index) {
// print(index); // print(index);
@ -363,7 +364,34 @@ class _DiscoverState extends State<Discover>
"你们都来过${user.both_cities!.first}", "你们都来过${user.both_cities!.first}",
style: TextStyle( style: TextStyle(
color: Colors.white, color: Colors.white,
fontSize: 14.sp), fontSize: 16.sp),
),
],
),
if (user.both_interests!.isNotEmpty)
SizedBox(
height: 8.sp,
),
if (user.both_interests!.isNotEmpty)
Row(
children: [
Container(
width: 6.sp,
height: 6.sp,
margin:
EdgeInsets.only(right: 4.sp),
decoration: BoxDecoration(
borderRadius:
BorderRadius.circular(3.sp),
color: const Color(0xFFCE51FF),
),
),
// if (logic.online)
Text(
"你们有共同的圈子:${user.both_interests!.first['title']}",
style: TextStyle(
color: Colors.white,
fontSize: 16.sp),
), ),
], ],
), ),
@ -390,7 +418,7 @@ class _DiscoverState extends State<Discover>
onLineStr, onLineStr,
style: TextStyle( style: TextStyle(
color: Colors.white, color: Colors.white,
fontSize: 14.sp), fontSize: 16.sp),
), ),
], ],
), ),
@ -409,7 +437,7 @@ class _DiscoverState extends State<Discover>
width: 73.sp, width: 73.sp,
height: 25.sp, height: 25.sp,
decoration: BoxDecoration( decoration: BoxDecoration(
gradient: AppColor.mainLinearGradient, gradient: AppColor.mainVerLinearGradient,
borderRadius: borderRadius:
BorderRadius.circular(12.5.sp)), BorderRadius.circular(12.5.sp)),
child: Row( child: Row(
@ -544,11 +572,11 @@ class _DiscoverState extends State<Discover>
getCircleImage( getCircleImage(
'chat_icon', 'chat_icon',
), ),
width: 40.sp, width: 50.sp,
), ),
), ),
SizedBox( SizedBox(
height: 15.sp, height: 25.sp,
), ),
GestureDetector( GestureDetector(
onTap: () { onTap: () {
@ -565,11 +593,11 @@ class _DiscoverState extends State<Discover>
? 'like_icon' ? 'like_icon'
: 'nor_like_icon', : 'nor_like_icon',
), ),
width: 40.sp, width: 50.sp,
), ),
), ),
SizedBox( SizedBox(
height: 8.sp, height: 20.sp,
), ),
GestureDetector( GestureDetector(
onTap: () { onTap: () {
@ -580,7 +608,7 @@ class _DiscoverState extends State<Discover>
getCircleImage( getCircleImage(
'no_look_icon', 'no_look_icon',
), ),
width: 40.sp, width: 50.sp,
), ),
) )
], ],
@ -911,6 +939,7 @@ class Users {
int? vip; int? vip;
String? wxNum; String? wxNum;
List? both_cities; List? both_cities;
List? both_interests;
Users( Users(
{this.age, {this.age,
@ -920,6 +949,7 @@ class Users {
this.birthday, this.birthday,
this.blacklist, this.blacklist,
this.city, this.city,
this.both_interests,
this.distance, this.distance,
this.dust, this.dust,
this.email, this.email,
@ -970,6 +1000,7 @@ class Users {
vip = json['vip']; vip = json['vip'];
role = json['role']; role = json['role'];
auth = json['auth']; auth = json['auth'];
both_interests = json['both_interests'] ?? [];
both_cities = json['both_cities'] ?? []; both_cities = json['both_cities'] ?? [];
is_follow = json['is_follow']; is_follow = json['is_follow'];
interests = json['interests']; interests = json['interests'];

View File

@ -46,6 +46,9 @@ class _VicinityState extends State<Vicinity> with AutomaticKeepAliveClientMixin
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
// TODO: add widget build method // TODO: add widget build method
if (widget.logic.myVip == 0) {
_scrollController.jumpTo(_scrollController.offset - 150.sp);
}
return widget.logic.vicinityList.isNotEmpty ? Stack( return widget.logic.vicinityList.isNotEmpty ? Stack(
fit: StackFit.expand, fit: StackFit.expand,
children: [ children: [
@ -56,6 +59,7 @@ class _VicinityState extends State<Vicinity> with AutomaticKeepAliveClientMixin
enablePullUp: true, enablePullUp: true,
child: ListView.builder( child: ListView.builder(
controller: _scrollController, controller: _scrollController,
physics: widget.logic.myVip ==0 ? NeverScrollableScrollPhysics() : BouncingScrollPhysics(),
padding: EdgeInsets.all(10.sp), padding: EdgeInsets.all(10.sp),
itemCount: widget.logic.vicinityList.length + 1, itemCount: widget.logic.vicinityList.length + 1,
itemBuilder: (context, index) { itemBuilder: (context, index) {
@ -148,7 +152,7 @@ class _VicinityState extends State<Vicinity> with AutomaticKeepAliveClientMixin
return Container( return Container(
width: Get.width, width: Get.width,
// margin: EdgeInsets.only(top: 10.sp), // margin: EdgeInsets.only(top: 10.sp),
color: const Color(0xB30B011B), color: Colors.black87,
padding: EdgeInsets.symmetric(vertical: 14.sp, horizontal: 20.sp), padding: EdgeInsets.symmetric(vertical: 14.sp, horizontal: 20.sp),
child: Column( child: Column(
children: [ children: [

View File

@ -2,6 +2,7 @@
import 'package:circle_app/network/dio_manager.dart'; import 'package:circle_app/network/dio_manager.dart';
import 'package:circle_app/router/app_routers.dart'; import 'package:circle_app/router/app_routers.dart';
import 'package:circle_app/util/util.dart'; import 'package:circle_app/util/util.dart';
import 'package:flutter/services.dart';
import 'package:flutter_native_splash/flutter_native_splash.dart'; import 'package:flutter_native_splash/flutter_native_splash.dart';
import 'package:flutter_pickers/time_picker/model/pduration.dart'; import 'package:flutter_pickers/time_picker/model/pduration.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
@ -126,6 +127,12 @@ class Complete_materialLogic extends GetxController {
} catch (e) { } catch (e) {
SmartDialog.dismiss(); SmartDialog.dismiss();
print(e); print(e);
PlatformException? exception = e as PlatformException?;
// invalid_image
if(exception!.code == 'invalid_image') {
showOKToast('不支持的图片格式,请另外选择图片');
}
} }
} }

View File

@ -28,7 +28,6 @@ class _Complete_materialPageState extends State<Complete_materialPage> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return GetBuilder(builder: (Complete_materialLogic controller) { return GetBuilder(builder: (Complete_materialLogic controller) {
return Stack( return Stack(
children: [ children: [
@ -41,22 +40,18 @@ class _Complete_materialPageState extends State<Complete_materialPage> {
), ),
), ),
Scaffold( Scaffold(
resizeToAvoidBottomInset: false, // resizeToAvoidBottomInset: false,
appBar: MyAppBar( appBar: MyAppBar(
centerTitle: '完善您的个人形象',
centerTitle: '完善您的个人形象', isBack: true,
isBack: true, isDiyBack: true,
isDiyBack: true, backPressed: () async {
backPressed: () async { final isBack = await Navigator.maybePop(context);
final isBack = await Navigator.maybePop(context); if (isBack) {
if (isBack) { } else {
Get.offNamed(AppRoutes.Login);
} else { }
Get.offNamed(AppRoutes.Login); }),
}
}
),
backgroundColor: Colors.transparent, backgroundColor: Colors.transparent,
body: GestureDetector( body: GestureDetector(
onTap: () { onTap: () {
@ -135,7 +130,7 @@ class _Complete_materialPageState extends State<Complete_materialPage> {
fontWeight: FontWeight.w500, fontWeight: FontWeight.w500,
fontSize: 14.sp), fontSize: 14.sp),
decoration: InputDecoration( decoration: InputDecoration(
counterText:'', counterText: '',
hintText: '请输入微信号', hintText: '请输入微信号',
hintStyle: TextStyle( hintStyle: TextStyle(
color: Colors.white, color: Colors.white,
@ -144,9 +139,8 @@ class _Complete_materialPageState extends State<Complete_materialPage> {
border: InputBorder.none, border: InputBorder.none,
), ),
), ),
() {}, () {},
img: 'edit'), img: 'edit'),
funcWidget( funcWidget(
'属性', '属性',
Text( Text(
@ -159,7 +153,7 @@ class _Complete_materialPageState extends State<Complete_materialPage> {
showSexPiker(context, controller); showSexPiker(context, controller);
}), }),
funcWidget( funcWidget(
'生日', '年龄',
Text( Text(
controller.state.age, controller.state.age,
style: TextStyle( style: TextStyle(
@ -225,31 +219,51 @@ class _Complete_materialPageState extends State<Complete_materialPage> {
width: Get.width - 50.sp, width: Get.width - 50.sp,
child: Stack( child: Stack(
children: [ children: [
Image.asset(getLoginImage('desc_bg'),width: Get.width - 50.sp,fit: BoxFit.fill,), Image.asset(
TextField( getLoginImage('desc_bg'),
maxLines: 4, width: Get.width - 50.sp,
controller: fit: BoxFit.fill,
controller.state.descEditingController, ),
style: TextStyle( Container(
color: Colors.white, margin:
fontWeight: FontWeight.w500, EdgeInsets.only(left: 15.sp, top: 15.sp,right: 10.sp),
fontSize: 14.sp), child: Column(
decoration: InputDecoration( crossAxisAlignment: CrossAxisAlignment.start,
hintText: '请输入您的交友宣言', children: [
// icon: Text('交友宣言:',style: TextStyle(color: Colors.white,fontSize: 14.sp,fontWeight: FontWeight.w500),), Text(
labelText: '您的交友宣言', '交友宣言',
labelStyle: TextStyle( style: TextStyle(
color: Colors.white, color: Colors.white, fontSize: 14.sp),
fontWeight: FontWeight.w600, ),
fontSize: 16.sp), TextField(
hintStyle: TextStyle( maxLines: 3,
color: Colors.white, controller: controller
fontWeight: FontWeight.w500, .state.descEditingController,
fontSize: 14.sp), style: TextStyle(
border: InputBorder.none, color: Colors.white,
contentPadding: EdgeInsets.all(20.sp)), fontWeight: FontWeight.w500,
inputFormatters: [LengthLimitingTextInputFormatter(40)], fontSize: 14.sp),
) decoration: InputDecoration(
hintText: '认真写一段交友宣言可以让您的个人形象更完善哦~',
// icon: Text('交友宣言:',style: TextStyle(color: Colors.white,fontSize: 14.sp,fontWeight: FontWeight.w500),),
// labelText: '交友宣言:认真写一段交友宣言可以让您的个人形象更完善哦~',
labelStyle: TextStyle(
color: Colors.white,
fontWeight: FontWeight.w600,
fontSize: 14.sp),
hintStyle: TextStyle(
color: Colors.white.withOpacity(0.5),
fontWeight: FontWeight.w500,
fontSize: 14.sp),
border: InputBorder.none,
contentPadding:
EdgeInsets.only(top: 4.sp,left:0.sp,right: 10.sp)),
inputFormatters: [
LengthLimitingTextInputFormatter(40)
],
)
],
)),
], ],
), ),
), ),
@ -316,7 +330,9 @@ class _Complete_materialPageState extends State<Complete_materialPage> {
fontSize: 16.sp, fontSize: 16.sp,
fontWeight: FontWeight.w500, fontWeight: FontWeight.w500,
shadows: [ shadows: [
Shadow(color: const Color(0xffF657FF), blurRadius: 4.0.sp) Shadow(
color: const Color(0xffF657FF),
blurRadius: 4.0.sp)
])), ])),
Expanded( Expanded(
child: Padding( child: Padding(
@ -348,10 +364,8 @@ class _Complete_materialPageState extends State<Complete_materialPage> {
} }
interestWdiget(String interest, Complete_materialLogic controller) { interestWdiget(String interest, Complete_materialLogic controller) {
return Container( return Container(
height: 59.sp, height: 59.sp,
width: Get.width - 140.sp, width: Get.width - 140.sp,
child: ListView.builder( child: ListView.builder(
itemCount: controller.numbers.length, itemCount: controller.numbers.length,

View File

@ -59,19 +59,17 @@ class LoginLogic extends GetxController {
} }
Future<void> getCode() async { Future<void> getCode() async {
SmartDialog.showLoading(msg: '正在发送中');
var data = await DioManager.instance.post( var data = await DioManager.instance.post(
url: Api.sendCode, params: {"phone": phoneEditingController.text}); url: Api.sendCode, params: {"phone": phoneEditingController.text});
var bean = BaseResponse<Data>.fromJson(data, (data) => Data.fromJson(data)); var bean = BaseResponse<Data>.fromJson(data, (data) => Data.fromJson(data));
SmartDialog.dismiss();
if (bean.code == 200) { if (bean.code == 200) {
showOKToast('发送成功!'); showOKToast('验证码已发送,稍后可前往短信查看');
if (kDebugMode) { if (bean.data!.code != null) {
//print("验证码:${bean.data!.code}"); codeEditingController.text = bean.data!.code.toString();
if (bean.data!.code != null) { update();
codeEditingController.text = bean.data!.code.toString();
update();
}
} }
t = Timer.periodic(const Duration(milliseconds: 1000), (timer) { t = Timer.periodic(const Duration(milliseconds: 1000), (timer) {

View File

@ -17,7 +17,7 @@ import '../../util/SharedPreferencesHelper.dart';
import '../../util/util.dart'; import '../../util/util.dart';
import 'logic.dart'; import 'logic.dart';
const vipIcon = 'assets/images/home/icon_vip.png'; const vipIcon = 'assets/images/home/icon_vip_more.png';
const MyImageWidget = Image( const MyImageWidget = Image(
image: AssetImage(vipIcon), image: AssetImage(vipIcon),
@ -70,13 +70,17 @@ class MinefragmentPage extends StatelessWidget {
child: Stack(children: [ child: Stack(children: [
logic.isProxy ? MyImageWidget1 : MyImageWidget, logic.isProxy ? MyImageWidget1 : MyImageWidget,
Positioned( Positioned(
top: 54.sp, top: 24.sp,
left: 72.sp, left: 78.sp,
child: Text(logic.vipMsg,style: TextStyle(color: const Color(0x99FFFFFF),fontSize: 12.sp),)), child: Column(
Positioned( crossAxisAlignment: CrossAxisAlignment.start,
top: 26.sp, children: [
left: 70.sp, Text("会员-微乐园贵宾",style: TextStyle(color: const Color(0xFFFFFFFF),fontSize: 16.sp),),
child: Text("会员-微乐园贵宾",style: TextStyle(color: const Color(0xFFFFFFFF),fontSize: 16.sp),)) SizedBox(height: 4.sp,),
Text(logic.vipMsg,style: TextStyle(color: const Color(0x99FFFFFF),fontSize: 13.sp),),
],
)),
],), ],),
), ),
_circleLiveView(logic), _circleLiveView(logic),

View File

@ -79,7 +79,7 @@ class MyTabbedScreenState extends State<UserinfoPage>
backgroundColor: Colors.transparent, backgroundColor: Colors.transparent,
appBar: MyAppBar( appBar: MyAppBar(
centerTitle: logic.userInfoBean != null centerTitle: logic.userInfoBean != null
? "${logic.userInfoBean!.nickname}的主页" ? "${logic.userInfoBean!.nickname}"
: "个人主页", : "个人主页",
actionWdiget: logic.isMe ? GestureDetector( actionWdiget: logic.isMe ? GestureDetector(
onTap: () { onTap: () {
@ -89,8 +89,8 @@ class MyTabbedScreenState extends State<UserinfoPage>
alignment: Alignment.center, alignment: Alignment.center,
children: [ children: [
Container( Container(
width: 90.sp, width: 101.sp,
height: 24.sp, height: 26.sp,
decoration: BoxDecoration( decoration: BoxDecoration(
borderRadius: BorderRadius.circular(12.sp), borderRadius: BorderRadius.circular(12.sp),
gradient: LinearGradient( gradient: LinearGradient(
@ -101,18 +101,18 @@ class MyTabbedScreenState extends State<UserinfoPage>
), ),
), ),
Container( Container(
width: 88.sp, width: 100.sp,
decoration: BoxDecoration( decoration: BoxDecoration(
borderRadius: BorderRadius.circular(11.sp), borderRadius: BorderRadius.circular(11.sp),
color: Color(0xFF240F3B) color: Color(0xFF240F3B)
), ),
alignment: Alignment.center, alignment: Alignment.center,
height: 22.sp, height: 24.sp,
child: Text( child: Text(
'填写微信号', '填写微信号',
style: TextStyle( style: TextStyle(
color: Colors.white, fontSize: 12.sp), color: Colors.white, fontSize: 14.sp),
), ),
) )
], ],

View File

@ -148,7 +148,7 @@ class _AddWxTipState extends State<AddWxTip> {
// padding: EdgeInsets.only(left: 6.sp, right: 6.sp), // padding: EdgeInsets.only(left: 6.sp, right: 6.sp),
alignment: Alignment.center, alignment: Alignment.center,
decoration: BoxDecoration( decoration: BoxDecoration(
gradient: AppColor.mainLinearGradient, gradient: AppColor.mainVerLinearGradient,
borderRadius: BorderRadius.circular(4.sp)), borderRadius: BorderRadius.circular(4.sp)),
child: Text( child: Text(
widget.isHaveWx ? ' 更新微信 ':' 填写微信 ', widget.isHaveWx ? ' 更新微信 ':' 填写微信 ',
@ -168,6 +168,7 @@ class _AddWxTipState extends State<AddWxTip> {
), ),
GestureDetector( GestureDetector(
behavior: HitTestBehavior.opaque,
onTap: () { onTap: () {
Get.back(); Get.back();
}, },
@ -176,7 +177,8 @@ class _AddWxTipState extends State<AddWxTip> {
alignment: Alignment.center, alignment: Alignment.center,
child: Image.asset( child: Image.asset(
getHomeImage('wx_close'), getHomeImage('wx_close'),
width: 24.sp, width: 32.sp,
fit: BoxFit.fill,
)), )),
) )
], ],

View File

@ -270,7 +270,7 @@ class _UnlockWxTipState extends State<UnlockWxTip> {
alignment: Alignment.center, alignment: Alignment.center,
decoration: BoxDecoration( decoration: BoxDecoration(
shape: BoxShape.circle, shape: BoxShape.circle,
gradient: AppColor.mainLinearGradient gradient: AppColor.mainVerLinearGradient
), ),
child: Text( child: Text(
'VIP', 'VIP',

View File

@ -4,8 +4,9 @@ import 'package:flutter/material.dart';
class AppColor { class AppColor {
static Color mainColor = Color(0xFF06F9FA); static Color mainColor = Color(0xFF06F9FA);
static Color mainBgColor = Color(0XFF392D53);
static Gradient mainLinearGradient = const LinearGradient( static Gradient mainVerLinearGradient = const LinearGradient(
colors: [ colors: [
Color(0xFF06F9FA), Color(0xFF06F9FA),
Color(0xFFDC5BFD), Color(0xFFDC5BFD),
@ -13,4 +14,13 @@ class AppColor {
begin: Alignment.centerLeft, begin: Alignment.centerLeft,
end: Alignment.centerRight, end: Alignment.centerRight,
); );
static Gradient mainHorLinearGradient = const LinearGradient(
colors: [
Color(0xFF06F9FA),
Color(0xFFDC5BFD),
],
begin: Alignment.topCenter,
end: Alignment.bottomCenter,
);
} }

View File

@ -57,13 +57,13 @@ void showFloatingButtonOverlay(
Row( Row(
children: [ children: [
Container( Container(
width: 50.sp, width: 70.sp,
child: Text( child: Text(
nickname, nickname,
overflow: TextOverflow.ellipsis, overflow: TextOverflow.ellipsis,
style: const TextStyle( style: TextStyle(
color: Color.fromRGBO(247, 250, 250, 1.0), color: Color.fromRGBO(247, 250, 250, 1.0),
fontSize: 14, fontSize: 16.sp,
), ),
), ),
), ),
@ -106,7 +106,7 @@ void showFloatingButtonOverlay(
: "我也喜欢了你,一起聊聊呗~", : "我也喜欢了你,一起聊聊呗~",
style: TextStyle( style: TextStyle(
color: Colors.grey, color: Colors.grey,
fontSize: 12.sp, fontSize: 14.sp,
), ),
maxLines: 1, maxLines: 1,
overflow: TextOverflow.ellipsis, overflow: TextOverflow.ellipsis,