提交 d383199f authored 作者: yueweilu's avatar yueweilu

Merge remote-tracking branch 'origin/test' into test

......@@ -181,7 +181,7 @@ abstract class MineAPI {
///
static Future <bool> changeInfo({
String? name,
String? sex,
num? sex,
String? headImg
}) async {
Map<String,dynamic> params = {};
......
library user_feedback;
import 'package:flutter/material.dart';
import 'package:flutter_book/theme.dart';
import 'package:flutter_book/utils/index.dart';
import '../../widgets/index.dart';
......
......@@ -16,10 +16,9 @@ class _UserFeedbackPageState extends State<UserFeedbackPage> {
centerTitle: true,
),
body: Container(
margin: const EdgeInsets.symmetric(horizontal: AppTheme.margin),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(8),
color: Colors.white,
color: Colors.transparent,
),
child: Column(
mainAxisSize: MainAxisSize.min,
......@@ -40,8 +39,10 @@ class _UserFeedbackPageState extends State<UserFeedbackPage> {
])),
),
Container(
padding: const EdgeInsets.only(left: 10, right:10,top: 6.5,bottom: 10),
child: const CustomInput(
padding: const EdgeInsets.only(
left: 10, right: 10, top: 6.5, bottom: 10),
child: const CustomInput(
maxLines: 5,
hintText: '请描述你的问题,我们会尽快处理并回复',
),
......@@ -49,48 +50,26 @@ class _UserFeedbackPageState extends State<UserFeedbackPage> {
// _buildTextField(context),
Container(
padding: const EdgeInsets.only(left: 10, right:10,top: 35,bottom: 20),
padding: const EdgeInsets.only(
left: 10, right: 10, top: 35, bottom: 20),
width: double.infinity,
child: ElevatedButton(
onPressed: () {
print("提交反馈");
},
style: ButtonStyle(
backgroundColor: MaterialStateProperty.all(Colours.cAB1941),
shape: MaterialStateProperty.all(BeveledRectangleBorder(borderRadius: BorderRadius.circular(2))),//圆角弧度
),
child: const Text(
"提交反馈",
style: TextStyle(fontSize: 14, color: Colours.cFF),
)),
child:
CustomGradientButton(
text: '提交反馈',
isEnabled: true,
onPressed: () {
print('提交反馈');
// controller.onLogin(context);
},
)
),
],
),
));
}
)
Widget _buildTextField(BuildContext context) {
return Container(
padding: const EdgeInsets.only(left: 10, right:10,top:30),
width: double.infinity,
child: TextField(
style: const TextStyle(color: Colors.blue,height: 3,),
minLines: 5,
maxLines: 5,
cursorColor: Colours.c3,
cursorRadius: const Radius.circular(3),
cursorWidth: 1,
showCursor: true,
decoration: const InputDecoration(
contentPadding: EdgeInsets.all(10),
hintText: "请描述你的问题,我们会尽快处理并回复",
border: OutlineInputBorder(),
),
onChanged: (v) {},
),
);
}
}
part of user_gender;
class UserGenderController extends GetxController {
final UserInfoModel userInfo;
UserGenderController(this.userInfo);
/// 修改用用户信息
void _changeInfo(num sex) async {
final result = await MineAPI.changeInfo(sex: sex);
if (result) {
Toast.show('修改成功');
userInfo.sex = sex ;
update();
}
}
}
library user_gender;
import 'dart:ffi';
import 'package:flutter/material.dart';
import 'package:flutter_book/theme.dart';
import 'package:flutter_book/utils/index.dart';
import 'package:flutter_book/widgets/index.dart';
import 'package:get/get_state_manager/src/simple/get_controllers.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get_state_manager/src/simple/get_state.dart';
import 'package:go_router/go_router.dart';
import '../../apis/index.dart';
import '../../models/index.dart';
part 'view.dart';
part 'controller.dart';
\ No newline at end of file
part of user_gender;
class UserGenderPage extends StatefulWidget {
final UserInfoModel userInfo;
const UserGenderPage({Key? key, required this.userInfo}) : super(key: key);
@override
State<UserGenderPage> createState() => _UserGenderPageState();
}
class _UserGenderPageState extends State<UserGenderPage> {
late num? selectedGender ; // 选中的性别
@override
void initState() {
super.initState();
selectedGender = widget.userInfo.sex;
// 在这里可以使用 localVariable 进行操作
}
@override
Widget build(BuildContext context) {
return WillPopScope(
onWillPop: () async {
context.pop(true);
return false;
},
child: GetBuilder<UserGenderController>(
init: UserGenderController(widget.userInfo),
builder: (controller) => Scaffold(
appBar: CustomAppBar(
title: const Text('设置性别'),
actions: [],
),
body: Container(
margin: const EdgeInsets.symmetric(
horizontal: AppTheme.margin, vertical: AppTheme.margin),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(8),
color: Colors.white,
boxShadow: [
BoxShadow(
color: const Color(0xFFC7C7C7).withOpacity(0.5),
offset: const Offset(3, 0),
blurRadius: 10.w,
spreadRadius: 0.w,
),
],
),
child: ClipRRect(
borderRadius: BorderRadius.circular(8),
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
/// 男
GestureDetector(
onTap: () {
// print("点击了男");
setState(() {
controller._changeInfo(1);
selectedGender = 1;
});
},
child: Container(
padding: const EdgeInsets.only(left: 15, right: 15),
color: Colors.transparent,
height: 35,
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
const Text(
"男",
style: TextStyle(
fontSize: 14,
color: Colours.c3,
),
),
Visibility(
visible: selectedGender == 1,
// child: Image.asset('assets/images/check.png'))
child: Image(
image:
const AssetImage("assets/images/check.png"),
height: 15.w,
width: 15.w,
)),
],
),
),
/* Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
_buildItem(
'男',
),
Padding(
padding: const EdgeInsets.only(right: 18),
child: Visibility(
visible: selectedGender == 1,
child: Image.asset('assets/images/check.png'))),
],
)*/
),
Container(
color: Colours.cLine,
margin: const EdgeInsets.symmetric(horizontal: 10),
height: 1,
),
GestureDetector(
onTap: () {
setState(() {
controller._changeInfo(2);
selectedGender = 2;
});
},
child: Container(
padding: const EdgeInsets.only(left: 15, right: 15),
color: Colors.transparent,
height: 35,
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
const Text(
"女",
style: TextStyle(
fontSize: 14,
color: Colours.c3,
),
),
Visibility(
visible: selectedGender == 2,
child: Image(
image:
const AssetImage("assets/images/check.png"),
height: 15.w,
width: 15.w,
))
],
),
),
/*Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
_buildItem(
'女',
),
Padding(
padding: const EdgeInsets.only(right: 18),
child: Visibility(
visible: selectedGender == 2,
child: Image.asset('assets/images/check.png'))),
],
)*/
),
Container(
color: Colours.cLine,
margin: const EdgeInsets.symmetric(horizontal: 10),
height: 1,
),
GestureDetector(
onTap: () {
setState(() {
controller._changeInfo(3);
selectedGender = 3;
});
},
child: /*Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
_buildItem(
'保密',
),
Padding(
padding: const EdgeInsets.only(right: 18),
child: Visibility(
visible: selectedGender == 3,
child: Image.asset('assets/images/check.png'))),
],
)*/
Container(
padding: const EdgeInsets.only(left: 15, right: 15),
color: Colors.transparent,
height: 35,
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
const Text(
"保密",
style: TextStyle(
fontSize: 14,
color: Colours.c3,
),
),
Visibility(
visible: selectedGender == 3,
child: Image(
image:
const AssetImage("assets/images/check.png"),
height: 15.w,
width: 15.w,
))
],
),
),
),
],
),
),
))
),
);
}
}
part of user_nick;
class UserNickController extends GetxController {
final UserInfoModel userInfo;
UserNickController(this.userInfo);
/// 修改用用户信息
void _changeInfo(String nick) async {
final result = await MineAPI.changeInfo(name: nick);
if (result) {
Toast.show('修改成功');
userInfo.name = nick ;
update();
}
}
}
......@@ -4,5 +4,13 @@ import 'package:flutter/material.dart';
import 'package:flutter_book/theme.dart';
import 'package:flutter_book/utils/index.dart';
import 'package:flutter_book/widgets/index.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
import 'package:get/get_state_manager/src/simple/get_controllers.dart';
part 'view.dart';
\ No newline at end of file
import '../../apis/index.dart';
import '../../models/index.dart';
import '../user_gender/index.dart';
part 'view.dart';
part 'controller.dart';
\ No newline at end of file
part of user_nick;
class UserNickPage extends StatefulWidget {
const UserNickPage({Key? key}) : super(key: key);
final UserInfoModel userInfo;
const UserNickPage({Key? key, required this.userInfo}) : super(key: key);
@override
State<UserNickPage> createState() => _UserNickPageState();
}
class _UserNickPageState extends State<UserNickPage> {
TextEditingController _textFieldController = TextEditingController();
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: CustomAppBar(
title: const Text('设置昵称'),
actions: [
Container(
height: 20,
width: 40,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10),
border:Border.all(
color: AppTheme.primary,
width: 1
)
),
child: Center(child: const Text('保存',style: TextStyle(fontSize: 12,color: AppTheme.primary),)),
)
],
),
body: Container(
margin: const EdgeInsets.symmetric(horizontal: AppTheme.margin),
height: 52,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(8),
color: Colors.white
),
child: Container(
padding: EdgeInsets.symmetric(horizontal: 15),
child: Row(
children: [
Text('昵称'),
Gaps.hGaps15,
Expanded(
child: TextField(
decoration: InputDecoration(
border: InputBorder.none,
enabledBorder: InputBorder.none,
focusedBorder: InputBorder.none,
suffixIcon: Center(
child: IconButton(
onPressed: (){
void initState() {
super.initState();
_textFieldController.text = widget.userInfo.name!;
// 在这里可以使用 localVariable 进行操作
}
@override
Widget build(BuildContext context) {
return GetBuilder<UserNickController>(
init: UserNickController(widget.userInfo),
builder: (controller) => Scaffold(
appBar: CustomAppBar(
title: const Text('设置昵称'),
actions: [
Container(
height: 20,
width: 40,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10),
border: Border.all(color: AppTheme.primary, width: 1)),
child: Center(
child: GestureDetector(
onTap: () {
// print("保存昵称");
controller._changeInfo(_textFieldController.text);
},
child: const Text(
'保存',
style: TextStyle(
fontSize: 12, color: AppTheme.primary),
)),
),
)
],
),
body: Container(
margin: const EdgeInsets.symmetric(horizontal: AppTheme.margin),
height: 42,
decoration: BoxDecoration(boxShadow: [
BoxShadow(
color: Colours.cC7.withOpacity(0.5),
spreadRadius: 0,
blurRadius: 10,
offset: const Offset(3, 0),
),
], borderRadius: BorderRadius.circular(8), color: Colors.white),
child: Container(
padding: const EdgeInsets.only(
left: 15,
right: 15,
),
child: Row(
children: [
const Text(
'昵称',
style: TextStyle(fontSize: 14, color: Colours.c3),
),
Gaps.hGaps15,
Expanded(
child: TextField(
controller: _textFieldController,
style:
const TextStyle(fontSize: 14, color: Colours.c3),
decoration: const InputDecoration(
filled: true,
fillColor: Colors.transparent,
// 设置背景颜色为透明
hintText: '请输入昵称',
border: InputBorder.none,
enabledBorder: InputBorder.none,
focusedBorder: InputBorder.none,
suffixIconConstraints: BoxConstraints.tightFor(
height: 15, width: 15)),
),
),
GestureDetector(
onTap: () {
// 处理点击事件,可以执行任意操作
_textFieldController.clear();
print('Image Clicked!');
},
icon: Icon(Icons.clear),
child: Image(
image: AssetImage('assets/images/del.png'),
height: 15.w,
width: 15.w,
),
),
),
suffixIconConstraints: BoxConstraints.tightFor(height: 15,width: 15)
],
),
),
)
],
),
),
),
);
),
));
}
}
......@@ -23,6 +23,7 @@ import 'package:flutter_book/pages/user_coupon/index.dart';
import 'package:flutter_book/pages/user_discuss/index.dart';
import 'package:flutter_book/pages/user_discuss_des/index.dart';
import 'package:flutter_book/pages/user_feedback/index.dart';
import 'package:flutter_book/pages/user_gender/index.dart';
import 'package:flutter_book/pages/user_info/index.dart';
import 'package:flutter_book/pages/user_love/index.dart';
import 'package:flutter_book/pages/user_msg/index.dart';
......
......@@ -222,7 +222,7 @@ abstract class Routes {
pageBuilder: (context, state) =>CupertinoPage(
name: state.uri.toString(),
key: state.pageKey,
child: const UserNickPage()
child: UserNickPage(userInfo: state.extra as UserInfoModel,)
)
),
GoRoute(
......@@ -427,6 +427,15 @@ abstract class Routes {
child: UserNotesDesPage(model: state.extra as CourseModel,)
)
),
GoRoute(
path: '/$gender',
name: gender,
pageBuilder: (context, state) =>CupertinoPage(
name: state.uri.toString(),
key: state.pageKey,
child: UserGenderPage(userInfo: state.extra as UserInfoModel,)
)
),
GoRoute(
path: '/$discussDes',
name: discussDes,
......
差异被折叠。
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论