import 'package:chat/data/constants.dart'; import 'package:chat/generated/i18n.dart'; import 'package:chat/utils/CustomUI.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:oktoast/oktoast.dart'; import '../utils/ShadowButton.dart'; import '../utils/HttpUtil.dart'; import 'package:dio/dio.dart'; import "../data/UserData.dart"; import '../utils/TokenMgr.dart'; class BindCodePage extends StatefulWidget { BindCodePage({Key key, bool flag}) : super(key: key); _BindCodePageState createState() => _BindCodePageState(); } class _BindCodePageState extends State { String _code = ''; @override Widget build(BuildContext context) { Widget appBar = AppBar( backgroundColor: AppColors.NewAppbarBgColor, title: Text( I18n.of(context).bind_code, style: TextStyle(color:AppColors.NewAppbarTextColor ), textScaleFactor: 1.0, ), leading: CustomUI.buildCustomLeading(context), centerTitle: true, ); return Scaffold( body: SafeArea( child: Center( child: Container( height: MediaQuery.of(context).size.height, width: MediaQuery.of(context).size.width, child: _buildBody(), ), )), appBar: appBar, resizeToAvoidBottomPadding: false, ); } @override void initState() { super.initState(); print('BindCodePage initState'); } @override void dispose() { super.dispose(); } Widget _buildBody() { return new Column( children: [ _buildTextInput(), _buildTips(), _buildLoginButton(), ], ); } Widget _buildTips() { var greyStyle = TextStyle(fontSize: 12, color: Constants.GreyTextColor); var redStyle = TextStyle(fontSize: 12, color: Colors.red); List list = I18n.of(context).fill_tips.split('/s1'); return Container( alignment: Alignment.centerLeft, margin: EdgeInsets.only(top: 12, left: 13.5), child: RichText( text: TextSpan(children: [ TextSpan(text: list[0], style: greyStyle), TextSpan(text: UserData().inviteCodePrice.toString(), style: redStyle), TextSpan(text: list[1], style: greyStyle), ])), ); } Widget _buildTextInput() { return Container( margin: EdgeInsets.only(top: 5.5), color: Colors.white, child: Row( children: [ Container( margin: EdgeInsets.only(left: 14, right: 25, top: 27.5, bottom: 27.5), child: Text(I18n.of(context).invide_code, style: TextStyle(color: Constants.BlackTextColor)), ), Expanded( child: TextField( keyboardAppearance: Brightness.light, style: TextStyle(fontSize: 14, textBaseline: TextBaseline.alphabetic), decoration: new InputDecoration( hintText: I18n.of(context).enter_incode, hintStyle: TextStyle(fontSize: 14), border: InputBorder.none, ), maxLines: 1, keyboardType: TextInputType.phone, inputFormatters: [ WhitelistingTextInputFormatter.digitsOnly, LengthLimitingTextInputFormatter(5) ], onChanged: (str) { _code = str; setState(() {}); }, )) ], ), ); } //构建绑定按钮 Widget _buildLoginButton() { Text text = new Text(I18n.of(context).determine, textScaleFactor: 1.0, style: TextStyle( fontSize: Constants.ShaderButtonFontSize, color: Colors.white)); LinearGradient gradientColor = new LinearGradient(colors: [ Constants.ConfrimButtonColor, Constants.ConfrimButtonColor, ]); callback() async { if (_code == null || _code == "") { showToast(I18n.of(context).enter_incode); return; } Map data = { "userId": UserData().basicInfo.userId, "agentId": int.parse(_code), }; data['sign'] = TokenMgr().getSign(data); Response res = await HttpUtil() .post('user/bind/agent', data: data, isShowLoading: true); var resData = res.data; showToast(resData['msg']); if (resData['code'] == 0) { UserData().agentId = int.parse(_code); Navigator.of(context).pop(); } } return new Container( margin: EdgeInsets.only(top: 35.5), height: Constants.ShaderButtonHeight, width: MediaQuery.of(context).size.width * 0.85, child: ShadowButton().builder(gradientColor, text, callback), ); } }