import 'dart:async'; import 'dart:io'; import 'package:fast/constants.dart'; import 'package:fast/model/model.dart'; import 'package:fast/utils/api.dart'; import 'package:fast/utils/global.dart'; import 'package:fast/utils/http_utils.dart'; import 'package:fast/utils/size_fit.dart'; import 'package:fast/utils/storage.dart'; import 'package:fast/view/component/header.dart'; import 'package:fast/view/component/toast.dart'; import 'package:fast/view/invite_code.dart'; import 'package:fast/view/phone.dart'; import 'package:fast/view/phone_code.dart'; import 'package:flutter/material.dart'; import 'package:fluwx/fluwx.dart'; import 'package:get/get.dart'; import 'package:sign_in_with_apple/sign_in_with_apple.dart'; class Login extends StatefulWidget { const Login({Key? key}) : super(key: key); @override State createState() => _LoginState(); } class _LoginState extends State { StreamSubscription? subscription; bool showSocial = false; @override void initState() { showSocial = Global().thirdLogin; initWxApi(); getConfig(); super.initState(); } Future getConfig() async { Map data = await HttpUtils.get(Api.serverConfig); Global().thirdLogin = data['thirdparty_login']; Global().pushEnable = data['push_enable']; Global().payEnable = data['pay_enable']; setState(() { showSocial = data['thirdparty_login']; }); } Future initWxApi() async { bool isSuccess = await registerWxApi( appId: 'wxa8557217acf4f532', universalLink: 'https://api.fast.liveplus.fun/'); if (isSuccess) { subscription = weChatResponseEventHandler.listen((event) { if (event is WeChatPaymentResponse) { } else if (event is WeChatAuthResponse) { print('9527'); login(event.code); } else if (event is WeChatShareResponse) {} }); } } @override void dispose() { if (subscription != null) { subscription!.cancel(); } super.dispose(); } Future login(code) async { Map data = await HttpUtils.post(Api.outhLogin, data: { "app_version": "1.0", "client_type": Platform.isAndroid ? "ANDROID" : "IOS", "client_version": "1.0", "type": "WX", "code": code }); UserBean user = UserBean.fromJson(data); Global().userBean = user; Global().token = data['token']; Global().balance = user.rjvBalance; if (user.inputInviteCode) { //没得验证码绑定,可以输入一波 //首次注册登录,弹获得多少逆龄石 showRegisterSuccessToast(); Timer(const Duration(milliseconds: 1300), () { Get.to(() => const InviteCode()); Global().showLogin = false; Global().mainPage!.showIndex(); Global().mainPage!.login(); StorageUtil().prefs!.setString("token", data['token']); }); } else { Global().showLogin = false; Global().mainPage!.showIndex(); Global().mainPage!.login(); StorageUtil().prefs!.setString("token", data['token']); } } showRegisterSuccessToast() { if (mounted) { showDialog( context: context, barrierDismissible: false, barrierColor: Colors.transparent, builder: (BuildContext context) { return Toast( title: '成功注册', content: Row( mainAxisAlignment: MainAxisAlignment.center, children: [ Text( '+9', style: TextStyle( color: Colors.white, fontSize: 16.px, fontWeight: FontWeight.w800, fontFamily: 'Exo2', decoration: TextDecoration.none), ), SizedBox( width: 3.px, ), Image.asset( 'assets/images/stone.png', width: 24.px, height: 24.px, ) ], ), ); }); } } Future wxLogin() async { sendWeChatAuth(scope: 'snsapi_userinfo'); // if (Platform.isAndroid) { // Global().token = // 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhdWQiOiJhY2NvdW50Iiwic3ViIjoiOGUyMzAxM2UxMDY3NjU2ODc0ZDQ2ZjNmNDk0OWMyMGIiLCJpc3MiOiJDT0RFUEFBUy5DT00iLCJuaWNrbmFtZSI6IkzDqW9uIiwidHlwIjoiQmVhcmVyIiwic2Vzc2lvbl9zdGF0ZSI6ImRmNzI2NDFiZWQ4NjhhZDcyNmJmNmU0YzNhYWU2NTgwIiwiZXhwIjoxNjgyOTE0MzE5LCJpYXQiOjE2NTEzNzgzMTl9.2j7rR0ZuaolTwluwp9tdGfvPlboV46yJbjY2baKNh7w'; // Global().showLogin = false; // Global().mainPage!.login(); // StorageUtil().prefs!.setString("token", Global().token); // // sendWeChatAuth(scope: 'snsapi_userinfo'); // } else { // Global().token = // 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhdWQiOiJhY2NvdW50Iiwic3ViIjoiOGUyMzAxM2UxMDY3NjU2ODc0ZDQ2ZjNmNDk0OWMyMGIiLCJpc3MiOiJDT0RFUEFBUy5DT00iLCJuaWNrbmFtZSI6IkzDqW9uIiwidHlwIjoiQmVhcmVyIiwic2Vzc2lvbl9zdGF0ZSI6ImRmNzI2NDFiZWQ4NjhhZDcyNmJmNmU0YzNhYWU2NTgwIiwiZXhwIjoxNjgyOTE0MzE5LCJpYXQiOjE2NTEzNzgzMTl9.2j7rR0ZuaolTwluwp9tdGfvPlboV46yJbjY2baKNh7w'; // Global().showLogin = false; // Global().mainPage!.login(); // StorageUtil().prefs!.setString("token", Global().token); // } } @override Widget build(BuildContext context) { SizeFit.initialize(context); return Material( child: Container( color: kBgColor, child: Column( children: [ Header( isIndexPage: false, ), Container( margin: EdgeInsets.only(top: 30.px), width: 128.px, height: 128.px, child: Image.asset("assets/images/logo.png"), ), if (showSocial) GestureDetector( onTap: () { wxLogin(); // Global().mainPage!.login(); }, child: Container( width: 228.px, height: 48.px, margin: EdgeInsets.only(top: 48.px, bottom: 30.px), decoration: BoxDecoration( borderRadius: BorderRadius.all(Radius.circular(24.px)), color: kThemeColor), child: Row( mainAxisAlignment: MainAxisAlignment.center, children: [ Image.asset( 'assets/images/wechat_login.png', width: 30.px, height: 24.px, ), SizedBox( width: 6.px, ), Text( '微信登录', style: TextStyle( color: const Color(0xFF000D1F), fontSize: 16.px, fontWeight: FontWeight.bold), ) ], ), ), ), GestureDetector( onTap: () { Get.to(() => Phone( type: 1, )); }, child: Text( '手机短信验证码登录', style: TextStyle(color: const Color(0x99C4CCDA), fontSize: 14.px), ), ), // SignInWithAppleButton( // onPressed: () async { // try{ // final credential = await SignInWithApple.getAppleIDCredential( // scopes: [ // AppleIDAuthorizationScopes.email, // AppleIDAuthorizationScopes.fullName, // ], // ); // print(credential); // } on Error catch (e){ // print(e.toString()); // } // }, // ) ], ), ), ); } }