|
- import 'package:cached_network_image/cached_network_image.dart';
- import 'package:chat/data/UserData.dart';
- import 'package:chat/data/constants.dart';
- import 'package:chat/generated/i18n.dart';
- import 'package:chat/home/MyDialogContent.dart';
- import 'package:chat/home/SelectPage.dart';
- import 'package:chat/utils/CustomUI.dart';
- import 'package:chat/utils/HttpUtil.dart';
- import 'package:chat/utils/MessageMgr.dart';
- import 'package:chat/utils/screen.dart';
- import 'package:dio/dio.dart';
- import 'package:flutter/material.dart';
- import 'package:city_pickers/city_pickers.dart';
- import 'package:flutter/services.dart';
- import 'package:flutter_datetime_picker/flutter_datetime_picker.dart';
- import 'package:image_cropper/image_cropper.dart';
-
- import 'package:oktoast/oktoast.dart';
- import '../utils/ShadowButton.dart';
- import 'package:image_picker/image_picker.dart';
- import 'dart:io';
- import '../data/UserData.dart';
- import '../utils/TokenMgr.dart';
- import '../data/WebData.dart';
- import 'IndexPage.dart';
- import 'UserAgreement.dart';
-
- const double TipLeft = 20;
- const double BorderLeft = 25;
-
- const double LeftTextFontSize = 13;
- const LetfTextStyle = TextStyle(
- fontSize: LeftTextFontSize,
- fontWeight: FontWeight.w600,
- color: Constants.BlackTextColor);
-
- class EditPage extends StatefulWidget {
- @required
- final bool isEditPage;
- EditPage({Key key, this.isEditPage = false}) : super(key: key);
-
- _EditPageState createState() => _EditPageState();
- }
-
- class _EditPageState extends State<EditPage> {
- //职业
- String profession = '';
- Set<String> professionId = Set.from([
- UserData().basicInfo.occupation == null
- ? 'Information-Internet'
- : UserData().basicInfo.occupation
- ]);
-
- //国家
- String country = '';
- Set<String> countryId = Set.from([
- UserData().basicInfo.country == null
- ? 'Country-VietNam'
- : 'Country-${UserData().basicInfo.country}'
- ]);
-
- //期待对象
- String lovePeople = '';
- Set<String> lovePeopleId = Set.from(UserData().basicInfo.hopeObject == null
- ? ['Indifferent']
- : UserData().basicInfo.hopeObject.split(','));
-
- //是否展示社交账号
- bool isHiddenSocialAccount = UserData().basicInfo.accountStatus == 1;
-
- //昵称
- String nickname = UserData().basicInfo.nickName;
-
- //约会范围
- String dateRange = '';
- Set<String> dateRangeId = Set.from(UserData().basicInfo.meetPlace == null
- ? []
- : UserData().basicInfo.meetPlace.split(','));
-
- //生日
- String birthday = '';
- String birthdayId = UserData().basicInfo.birthday == null
- ? '1995-01-01'
- : UserData().basicInfo.birthday;
-
- //身高数据
- String heightStr = '';
- String heightId = UserData().basicInfo.height == null
- ? '0'
- : UserData().basicInfo.height.toInt().toString();
- //体重数据
- String weightStr = '';
- String weightId = UserData().basicInfo.weight == null
- ? '0'
- : UserData().basicInfo.weight.toInt().toString();
-
- //是否同意用户协议
- bool isAgree = false;
-
- File headFile;
-
- bool loadSuccess = false;
-
- String wechat = UserData().basicInfo.wechat;
- String facebook = UserData().basicInfo.facebook;
-
- TextEditingController nickNameController =
- new TextEditingController(text: UserData().basicInfo.nickName);
- TextEditingController mymsgController =
- new TextEditingController(text: UserData().basicInfo.ownMsg);
-
- TextEditingController wechatController =
- new TextEditingController(text: UserData().basicInfo.wechat);
- TextEditingController fbController =
- new TextEditingController(text: UserData().basicInfo.facebook);
-
- initValue() {
- if (!loadSuccess) {
- profession = WebData().getProffesionName(professionId.first);
- if (!widget.isEditPage) {
- switch (UserData().language) {
- case LanguageType.English:
- countryId = Set.from(['Country-UnitedStates']);
- break;
- case LanguageType.Vietnamese:
- countryId = Set.from(['Country-VietNam']);
- break;
- case LanguageType.TraditionalChinese:
- case LanguageType.TraditionalChinese:
- countryId = Set.from(['Country-China']);
- break;
- case LanguageType.Korean:
- countryId = Set.from(['Country-Korea']);
- break;
- case LanguageType.Japanese:
- countryId = Set.from(['Country-Japan']);
- break;
- default:
- }
- }
- country = WebData().getCountry(countryId.first.split('-')[1]);
- var hopeObject = '';
- lovePeopleId.forEach((f) => hopeObject += hopeObject == '' ? f : ',$f');
- lovePeople = WebData().getLovePeople(hopeObject);
-
- var dateRangeStr = '';
- dateRangeId
- .forEach((f) => dateRangeStr += dateRangeStr == '' ? f : ',$f');
- dateRange = WebData().getDateRange(dateRangeStr);
-
- birthday = birthdayId;
-
- heightStr = (UserData().basicInfo.height == 0.0 ||
- UserData().basicInfo.height == null)
- ? I18n.of(context).not_show
- : '${UserData().basicInfo.height}M';
- weightStr = (UserData().basicInfo.weight == 0.0 ||
- UserData().basicInfo.weight == null)
- ? I18n.of(context).not_show
- : '${UserData().basicInfo.weight}KG';
- loadSuccess = true;
- setState(() {});
- }
- }
-
- BoxDecoration _getCardDecoration() {
- return new BoxDecoration(
- color: Colors.white,
- border: Border(
- top: Constants.GreyBorderSide, bottom: Constants.GreyBorderSide));
- }
-
- @override
- void initState() {
- super.initState();
- MessageMgr().on('change_currentcity', changeCurrentcity);
- print('EditPage initState');
- }
-
- changeCurrentcity(data) {
- if (!widget.isEditPage && dateRangeId.length == 0) {
- var dateRangeStr = '';
- dateRangeId = Set.from([UserData().currentCity]);
- dateRangeId
- .forEach((f) => dateRangeStr += dateRangeStr == '' ? f : ',$f');
- dateRange = WebData().getDateRange(dateRangeStr);
- setState(() {});
- }
- }
-
- @override
- void dispose() {
- nickNameController.dispose();
- mymsgController.dispose();
- MessageMgr().on('change_currentcity', changeCurrentcity);
- super.dispose();
- }
-
- _showDialog() {
- CustomUI.buildOneConfirm(
- context, I18n.of(context).exit_registration, I18n.of(context).determine,
- () {
- HttpUtil().clearCacheData();
- Navigator.of(context).pushAndRemoveUntil(new MaterialPageRoute(
- builder: (context) {
- return IndexPage();
- },
- ), (route) => route == null);
- });
- }
-
- Future<bool> _requestPop() {
- if (!widget.isEditPage) {
- _showDialog();
- } else {
- Navigator.of(context).pop();
- }
- return new Future.value(false);
- }
-
- @override
- Widget build(BuildContext context) {
- initValue();
-
- var keyHeight = MediaQuery.of(context).viewInsets.bottom;
- if (keyHeight > 0) {
- UserData().setKeyboardHeight(keyHeight);
- }
-
- Widget appBar = new AppBar(
- backgroundColor: AppColors.NewAppbarBgColor,
- title: new Text(
- widget.isEditPage
- ? I18n.of(context).edit_information
- : I18n.of(context).complete_material,
- textScaleFactor: 1.0,
- style: TextStyle(color: AppColors.NewAppbarTextColor),
- ),
- elevation: 1,
- leading: CustomUI.buildCustomLeading(context),
- actions: <Widget>[
- widget.isEditPage
- ? Container(
- alignment: Alignment.center,
- child: new InkWell(
- child: new Padding(
- padding: EdgeInsets.only(
- right: 15, left: 15, top: 10, bottom: 10),
- child: new Text(
- I18n.of(context).save,
- textScaleFactor: 1.0,
- style: TextStyle(color: Constants.BlueTextColor),
- ),
- ),
- onTap: () {
- postSettion((data) {
- showToast(I18n.of(context).successfully_saved);
- Navigator.of(context).pop();
- MessageMgr().emit('update_data', data);
- });
- },
- ),
- )
- : Container(),
- ],
- centerTitle: true);
- return WillPopScope(
- onWillPop: _requestPop,
- child: Scaffold(
- backgroundColor: const Color(0xFFEDEDED),
- body: SafeArea(
- child: Center(
- child: Container(
- height: MediaQuery.of(context).size.height,
- width: MediaQuery.of(context).size.width,
- child: _buildBody(),
- ),
- )),
- appBar: appBar,
- ));
- }
-
- Widget _buildBody() {
- List<Widget> body = [
- _buildHeadUrl(),
- _buildBasicData(context),
- UserData().isMan() ? Container() : _buildSocialContact(),
- // _buildHiddenButtom(),
- // _buildMoreInfo(),
- _buildCommitButton(),
- ];
- List<Widget> body2 = [
- _buildBasicData(context),
- _buildSocialContact(),
- _buildHiddenButtom(),
- _buildMoreInfo(),
- ];
- return new ListView(
- children: widget.isEditPage ? body2 : body,
- );
- }
-
- Widget _buildCommitButton() {
- return new Column(
- children: <Widget>[
- _buildRegisterButton(),
- _buildAgreement(),
- ],
- );
- }
-
- Widget _buildAgreement() {
- return InkWell(
- onTap: () async {
- Navigator.of(context).push(
- new MaterialPageRoute(
- builder: (context) {
- return UserAgreement();
- },
- ),
- );
- },
- child: Container(
- margin: EdgeInsets.only(top: 10, bottom: 20, left: 10, right: 10),
- child: Text(
- I18n.of(context).agreed_agreement,
- style: TextStyle(color: Colors.red),
- textAlign: TextAlign.center,
- )));
- }
-
- postSettion(callback) async {
- if (nickname == null || nickname == "" || nickname.length > 25) {
- showToast(I18n.of(context).only1_8);
- return;
- }
- if (dateRangeId.length == 0 && UserData().hasLocationPermission) {
- showToast(I18n.of(context).Please_select_a_resident_city);
- return;
- }
- if (birthdayId == null || birthdayId == '0') {
- showToast(I18n.of(context).choose_birthday);
- return;
- }
- if (professionId.length == 0) {
- showToast(I18n.of(context).choose_career);
- return;
- }
- // if (dateItemId.length == 0) {
- // showToast(I18n.of(context).select_program);
- // return;
- // }
-
- if (countryId.length == 0) {
- showToast(I18n.of(context).select_program);
- return;
- }
-
- if (lovePeopleId.length == 0) {
- showToast(I18n.of(context).choose_lover);
- return;
- }
- if (!UserData().isMan() &&
- (wechat == null || wechat == '') &&
- (facebook == null || facebook == '')) {
- showToast(I18n.of(context).least_account);
- return;
- }
-
- var program = '';
- //dateItemId.forEach((f) => program += program == '' ? f : ',$f');
- var hopeObject = '';
- lovePeopleId.forEach((f) => hopeObject += hopeObject == '' ? f : ',$f');
- var dateRangeStr = '';
- dateRangeId.forEach((f) => dateRangeStr += dateRangeStr == '' ? f : ',$f');
-
- Map data = {
- "userId": UserData().basicInfo.userId,
- "nickName": nickname,
- "birthday": birthdayId,
- };
- data['sign'] = TokenMgr().getSign(data);
- data["occupation"] = professionId.first;
- data["program"] = program;
- data["hopeObject"] = hopeObject;
- data["height"] = heightId;
- data['Country'] = countryId.first.split('-')[1];
- data["weight"] = weightId;
- data["ownMsg"] = mymsgController.text;
- data["meetPlace"] = dateRangeStr;
- data['wxAccount'] = wechat;
- data['fbAccount'] = facebook;
- data['accountStatus'] = isHiddenSocialAccount ? 1 : 0;
- data["lat"] = UserData().latitude;
- data["lng"] = UserData().longitude;
-
- try {
- Response res = await HttpUtil()
- .post('user/complete/material', data: data, isShowLoading: true);
- Map resData = res.data;
- if (resData['code'] == 0) {
- UserData().basicInfo.ownMsg = mymsgController.text;
- callback(mymsgController.text);
- } else {
- showToast(resData['msg']);
- }
- } catch (e) {}
- }
-
- //构建注册按钮
- Widget _buildRegisterButton() {
- Text text =
- fixedText(I18n.of(context).submit, fontSize: 15, color: Colors.white);
-
- LinearGradient gradientColor = new LinearGradient(colors: <Color>[
- Constants.ConfrimButtonColor,
- Constants.ConfrimButtonColor,
- ]);
- callback() {
- postSettion((data) async {
- Navigator.of(context)
- .pushNamedAndRemoveUntil('/main', (route) => route == null);
- });
- }
-
- return new Container(
- margin: EdgeInsets.only(top: 20),
- height: 44,
- width: MediaQuery.of(context).size.width * 0.85,
- child: ShadowButton().builder(gradientColor, text, callback),
- );
- }
-
- //自定义item
- Widget _bottomBorderBox(String textLeft, String textRight, bool flag,
- controller, bool isInit, callback,
- {inputFormatters}) {
- Widget left = Container(
- width: 90,
- margin: EdgeInsets.only(right: 10),
- child: Text(
- textLeft,
- textScaleFactor: 1.0,
- style: LetfTextStyle,
- ));
-
- Widget right = flag
- ? Expanded(
- child: TextField(
- keyboardAppearance: Brightness.light,
- controller: controller,
- style: TextStyle(
- fontSize: 14, textBaseline: TextBaseline.alphabetic),
- decoration: InputDecoration(
- contentPadding: EdgeInsets.zero,
- hintText: textRight,
- hintStyle: TextStyle(
- fontSize: 14,
- color: Constants.LightGreyTextColor,
- fontWeight: FontWeight.normal),
- border: InputBorder.none,
- ),
- maxLines: 1,
- inputFormatters: inputFormatters,
- onChanged: (str) {
- if (flag && callback != null) callback(str);
- },
- ),
- )
- : Expanded(
- child: Text(
- textRight,
- textScaleFactor: 1.0,
- style: TextStyle(
- fontSize: 14,
- color: !isInit
- ? Constants.LightGreyTextColor
- : Constants.BlackTextColor),
- ),
- );
-
- var icon = !flag
- ? Padding(
- padding: EdgeInsets.only(right: 7),
- child: Icon(
- IconData(0xe63c, fontFamily: 'iconfont'),
- size: 20.0,
- color: Color(AppColors.TabIconNormal),
- ))
- : Container();
-
- return new InkWell(
- highlightColor: Colors.transparent,
- radius: 0.0,
- onTap: () {
- if (!flag && callback != null) callback();
- },
- child: Container(
- height: 53,
- margin: EdgeInsets.only(left: BorderLeft, bottom: 0),
- child: new Row(
- children: <Widget>[left, right, icon],
- ),
- ));
- }
-
- //下划线
- Widget _buildDivider() {
- return new Container(
- margin: EdgeInsets.zero,
- padding: EdgeInsets.zero,
- height: 1,
- width: MediaQuery.of(context).size.width,
- child: new Divider(
- color: Colors.grey[300],
- ),
- );
- }
-
- //基本数据
- Widget _buildBasicData(context) {
- Widget tip = CustomUI.buildTopTip(
- BorderLeft, I18n.of(context).basic_information,
- showStar: true);
-
- //选择约会地区
- void selectDateRange() async {
- print(WebData().provinces['China']);
- Navigator.of(context).push(
- new MaterialPageRoute(
- builder: (context) {
- return SelectPage(
- mostNum: 1,
- dataId: dateRangeId,
- title: I18n.of(context).Resident_city,
- provinces: UserData().isInChina
- ? {'China': WebData().provinces['China']}
- : {
- 'VietNam': WebData().provinces['VietNam'],
- },
- cities: WebData().cities,
- isSingle: true,
- callback: (tempRankId) {
- if (tempRankId.length == 0) return;
- dateRangeId = tempRankId.toSet();
- if (dateRangeId.length != 0) {
- dateRange = '';
- dateRangeId.forEach((item) {
- var city = item.split('-');
- dateRange += dateRange == ''
- ? WebData().cities[city[0]][city[1]]
- : '/${WebData().cities[city[0]][city[1]]}';
- });
- }
- Navigator.of(context).pop();
- },
- );
- },
- ),
- );
- }
-
- //选择生日
- void selectDate() async {
- var locale;
- switch (UserData().language) {
- case LanguageType.English:
- locale = LocaleType.en;
- break;
- case LanguageType.Vietnamese:
- locale = LocaleType.vi;
- break;
- case LanguageType.TraditionalChinese:
- case LanguageType.SimplifiedChinese:
- locale = LocaleType.zh;
- break;
- case LanguageType.Korean:
- locale = LocaleType.ko;
- break;
- case LanguageType.Japanese:
- locale = LocaleType.jp;
- break;
- default:
- locale = LocaleType.en;
- }
- var list = [];
- if (birthdayId != null) list = birthdayId.split('-');
- var nowDate;
- nowDate = list.length == 3
- ? DateTime(int.parse(list[0]), int.parse(list[1]), int.parse(list[2]))
- : DateTime(1990, 1, 1);
- DatePicker.showDatePicker(context,
- showTitleActions: true,
- minTime: DateTime(1900, 3, 5),
- maxTime: DateTime(DateTime.now().year - 18, 1, 1),
- onChanged: (date) {}, onConfirm: (date) {
- birthday = '${date.year}-${date.month}-${date.day}';
- birthdayId = '${date.year}-${date.month}-${date.day}';
- setState(() {});
- }, currentTime: nowDate, locale: locale);
- }
-
- //选择职业
- void selectProfession() async {
- Navigator.of(context).push(
- new MaterialPageRoute(
- builder: (context) {
- return SelectPage(
- mostNum: 4,
- dataId: professionId,
- provinces: WebData().professionCate,
- isSingle: true,
- cities: WebData().professionList,
- title: I18n.of(context).choose_career,
- callback: (Set tempRankId) {
- professionId = tempRankId.toSet();
- if (professionId.length != 0) {
- profession = '';
- professionId.forEach((item) {
- var city = item.split('-');
- profession += profession == ''
- ? WebData().professionList[city[0]][city[1]]
- : '/${WebData().professionList[city[0]][city[1]]}';
- });
- }
- Navigator.of(context).pop();
- },
- );
- },
- ),
- );
- }
-
- //选择国家
- void selectCountry() async {
- Navigator.of(context).push(
- new MaterialPageRoute(
- builder: (context) {
- return SelectPage(
- mostNum: 4,
- dataId: countryId,
- title: I18n.of(context).country,
- provinces: {'Country': I18n.of(context).country},
- cities: {'Country': WebData().provinces},
- isSingle: true,
- callback: (tempRankId) {
- countryId = tempRankId.toSet();
- print('countryID ${countryId.length}');
- if (countryId.length != 0) {
- country = '';
- countryId.forEach((item) {
- var city = item.split('-');
- country += country == ''
- ? WebData().provinces[city[1]]
- : '/${WebData().provinces[city[1]]}';
- });
- }
- Navigator.of(context).pop();
- },
- );
- },
- ),
- );
- }
-
- //选择期待对象
- void selectLovePeople() {
- var tempSet = lovePeopleId.toSet();
- List<Widget> actions = [
- FlatButton(
- child: fixedText(I18n.of(context).close),
- onPressed: () {
- tempSet.clear();
- Navigator.of(context).pop();
- },
- ),
- FlatButton(
- child: fixedText(I18n.of(context).determine),
- onPressed: () {
- Navigator.of(context).pop();
- setState(() {
- lovePeopleId = tempSet.toSet();
- if (lovePeopleId.length != 0) {
- lovePeople = '';
- lovePeopleId.forEach((k) {
- lovePeople += (lovePeople == '')
- ? WebData().loverPeopleMap[k]
- : ('/' + WebData().loverPeopleMap[k]);
- });
- }
- });
- },
- ),
- ];
- //约会节目
- showDialog(
- context: context,
- builder: (BuildContext context) {
- return AlertDialog(
- title: new Align(
- alignment: Alignment.center,
- child: Text(I18n.of(context).expect_lover),
- ),
- content: new MyDialogContent(
- mostNum: 4,
- dataMap: WebData().loverPeopleMap,
- keyList: tempSet,
- ),
- contentPadding: EdgeInsets.only(top: 10),
- actions: actions,
- );
- });
- }
-
- Widget idItem = new InkWell(
- highlightColor: Colors.transparent,
- radius: 0.0,
- onTap: () {},
- child: Container(
- height: 53,
- margin: EdgeInsets.only(left: BorderLeft, bottom: 0),
- child: new Row(
- children: <Widget>[
- Container(
- width: 90,
- margin: EdgeInsets.only(right: 10),
- child: Text(
- 'ID',
- textScaleFactor: 1.0,
- style: LetfTextStyle,
- )),
- Text(
- UserData().basicInfo.userId.toString(),
- textScaleFactor: 1.0,
- style: TextStyle(fontSize: 14, color: Constants.GreyTextColor),
- )
- ],
- ),
- ));
-
- List<Widget> basicList = [
- widget.isEditPage ? idItem : Container(),
- _buildDivider(),
- _bottomBorderBox(I18n.of(context).nickname, I18n.of(context).fill_out,
- true, nickNameController, true, (str) => nickname = str,
- inputFormatters: [
- LengthLimitingTextInputFormatter(Constants.NameLength)
- ]),
- _buildDivider(),
- _bottomBorderBox(I18n.of(context).country, country, false, null,
- countryId.length != 0, selectCountry),
- _buildDivider(),
- _bottomBorderBox(
- I18n.of(context).Resident_city,
- !UserData().hasLocationPermission
- ? I18n.of(context).unknown
- : dateRange,
- false,
- null,
- dateRangeId.length != 0,
- UserData().hasLocationPermission ? selectDateRange : null),
- _buildDivider(),
- _bottomBorderBox(I18n.of(context).birthday, birthday, false, null,
- birthdayId != null, selectDate),
- _buildDivider(),
- _bottomBorderBox(I18n.of(context).job, profession, false, null,
- professionId.length != 0, selectProfession),
- // _bottomBorderBox(I18n.of(context).country, dateItem, false, null,
- // dateItemId.length != 0, selectCountry),
- _buildDivider(),
- _bottomBorderBox(I18n.of(context).expect_lover, lovePeople, false, null,
- lovePeopleId.length != 0, selectLovePeople),
- ];
-
- Widget basicCard = new Container(
- color: Colors.white,
- child: new Column(
- children: basicList,
- ),
- );
- return new Column(
- children: <Widget>[
- tip,
- basicCard,
- ],
- );
- }
-
- //社交账号
- Widget _buildSocialContact() {
- Widget tip = CustomUI.buildTopTip(
- BorderLeft, I18n.of(context).social_account,
- showStar: !UserData().isMan());
- List<Widget> basicList = [
- _bottomBorderBox(
- I18n.of(context).wechat_number,
- I18n.of(context).fill_out,
- true,
- wechatController,
- true,
- (str) => wechat = str,
- inputFormatters: [
- //WhitelistingTextInputFormatter(RegExp("^[A-Za-z0-9]+\$")),
- LengthLimitingTextInputFormatter(20)
- ]),
- _buildDivider(),
- _bottomBorderBox(I18n.of(context).facebook, I18n.of(context).fill_out,
- true, fbController, true, (str) => facebook = str,
- inputFormatters: [
- //WhitelistingTextInputFormatter(RegExp("^[A-Za-z0-9]+\$")),
- LengthLimitingTextInputFormatter(20)
- ]),
- ];
-
- Widget socialCard = new Container(
- color: Colors.white,
- child: new Column(
- children: basicList,
- ),
- );
- return new Column(
- children: <Widget>[tip, socialCard],
- );
- }
-
- Widget _buildHeadUrl() {
- double width = 95;
- return Container(
- color: Colors.white,
- padding: EdgeInsets.only(top: 20, bottom: 10),
- child: Column(
- children: <Widget>[
- InkWell(
- onTap: () {
- _sendPicture();
- },
- child: Container(
- width: width,
- height: width,
- child: ClipRRect(
- borderRadius: BorderRadius.circular(6.0),
- child: uploadImageUrl == null
- ? Image.asset(Constants.DefaultHeadImgUrl,
- height: width, width: width)
- // : Image.file(headFile, height: width, width: width),
- : CachedNetworkImage(
- imageUrl: uploadImageUrl,
- placeholder: CustomUI.buildImgLoding,
- width: width,
- height: width,
- ),
- ),
- ),
- ),
- Padding(
- padding: EdgeInsets.only(top: 5),
- child: InkWell(
- onTap: () {
- _sendPicture();
- },
- child: fixedText(
- I18n.of(context).upload_avatar,
- color: Constants.BlackTextColor,
- ),
- )),
- ],
- ),
- );
- }
-
- void _sendPicture() async {
- if (await CustomUI.showPhotoPermissionSetting(context)) {
- var tempFile = await ImagePicker.pickImage(source: ImageSource.gallery);
- if (tempFile != null) {
- //裁剪图片
- _cropPicture(tempFile);
- }
- }
- }
-
- String uploadImageUrl;
- void _cropPicture(tempFile) async {
- File croppedFile = await ImageCropper.cropImage(
- sourcePath: tempFile.path,
- aspectRatio: CropAspectRatio(ratioX: 1, ratioY: 1),
- );
- uploadImageUrl = null;
- if (croppedFile != null) {
- headFile = croppedFile;
- Map data = {"type": 1, "userId": UserData().basicInfo.userId};
- data['sign'] = TokenMgr().getSign(data);
- Response response = await HttpUtil()
- .uploadFile(headFile, data, 'upload/file/postflie', 'image');
-
- var resData = response.data;
- if (resData['code'] == 0 && resData['msg'] != null) {
- setState(() {
- uploadImageUrl = resData['msg'];
- });
- } else {
- showToast(I18n.of(context).fail);
- }
-
- setState(() {});
- } else {
- print('裁剪失败---');
- }
- }
-
- //是否隐藏社交账号
- Widget _buildHiddenButtom() {
- Widget left = Text(
- I18n.of(context).hide_account1,
- textScaleFactor: 1.0,
- style: TextStyle(fontSize: LeftTextFontSize, fontWeight: FontWeight.w500),
- );
- Widget right = new Expanded(
- child: Container(
- margin: EdgeInsets.only(right: 20),
- alignment: Alignment.centerRight,
- child: new Switch(
- activeTrackColor: Constants.ConfrimButtonColor.withOpacity(0.3),
- value: isHiddenSocialAccount,
- onChanged: (bool val) {
- setState(() {
- isHiddenSocialAccount = !isHiddenSocialAccount;
- });
- },
- )));
- return new Container(
- decoration: _getCardDecoration(),
- margin: EdgeInsets.only(top: 15, bottom: 0),
- padding: EdgeInsets.only(left: BorderLeft),
- height: 53,
- child: new Row(
- children: <Widget>[left, right],
- ),
- );
- }
-
- //更多信息
- Widget _buildMoreInfo() {
- Widget tip =
- CustomUI.buildTopTip(BorderLeft, I18n.of(context).more_information);
-
- //选择升高
- void selectHeight() async {
- Result temp = await CityPickers.showCityPicker(
- context: context,
- showType: ShowType.p,
- provincesData: WebData().heightData,
- citiesData: WebData().heightListData,
- height: 280,
- );
- setState(() {
- if (temp == null) return;
- heightStr = "${temp.provinceName}";
- heightId = temp.provinceId;
- });
- }
-
- //选择升高
- void selectWeight() async {
- Result temp = await CityPickers.showCityPicker(
- context: context,
- showType: ShowType.p,
- provincesData: WebData().weightData,
- citiesData: WebData().weightListData,
- height: 280,
- );
- setState(() {
- if (temp == null) return;
- weightStr = "${temp.provinceName}";
- weightId = temp.provinceId;
- });
- }
-
- //个人介绍框
- var myselfBox = Container(
- margin: EdgeInsets.only(left: BorderLeft, bottom: 0),
- child: Row(
- crossAxisAlignment: CrossAxisAlignment.start,
- children: <Widget>[
- Container(
- width: 90,
- margin: EdgeInsets.only(top: 14),
- child: Text(
- I18n.of(context).self_introduction,
- textScaleFactor: 1.0,
- style: LetfTextStyle,
- )),
- Expanded(
- child: TextField(
- keyboardAppearance: Brightness.light,
- controller: mymsgController,
- style: TextStyle(
- fontSize: 14,
- color: Constants.BlackTextColor,
- textBaseline: TextBaseline.alphabetic),
- decoration: InputDecoration(
- contentPadding:
- EdgeInsets.only(top: 14, right: 10, bottom: 10, left: 10),
- hintText: I18n.of(context).introduce_yourself,
- hintStyle: TextStyle(fontSize: 14, color: Colors.grey),
- border: InputBorder.none,
- ),
- maxLines: 5,
- inputFormatters: [LengthLimitingTextInputFormatter(100)],
- ),
- )
- ],
- ),
- );
-
- List<Widget> basicList = [
- _bottomBorderBox(I18n.of(context).height, heightStr, false, null,
- heightId != '0', selectHeight),
- _buildDivider(),
- _bottomBorderBox(I18n.of(context).weight, weightStr, false, null,
- weightId != '0', selectWeight),
- _buildDivider(),
- myselfBox,
- ];
-
- Widget socialCard = new Container(
- color: Colors.white,
- child: new Column(
- children: basicList,
- ),
- );
- return new Column(
- children: <Widget>[tip, socialCard],
- );
- }
- }
|