web_synchronization_tool/lib/login/login_page.dart

97 lines
2.4 KiB
Dart

import 'package:bitsdojo_window/bitsdojo_window.dart';
import 'package:common/utils/platform_utils.dart';
import 'package:common/utils/toast_utils.dart';
import 'package:flutter/material.dart';
import 'package:web_synchronization_tool/login/login_socket_utils.dart';
import 'package:web_synchronization_tool/login/widget/account_number_login_widget.dart';
import 'package:web_synchronization_tool/windows/windows_main_page.dart';
import 'package:window_manager/window_manager.dart';
import '../windows/socket_tool.dart';
class LoginPage extends StatefulWidget {
const LoginPage({super.key});
@override
State<LoginPage> createState() => _LoginPageState();
}
class _LoginPageState extends State<LoginPage> {
@override
void initState() {
super.initState();
initWindow();
LoginSocketUtils.getInstance().connect();
}
initWindow(){
//允许调整窗口大小
windowManager.setResizable(false);
const double width = 800;
const double height = 600;
//设置最小大小
const windowSize = Size(width, height);
windowManager.setSize(windowSize);
appWindow.minSize = windowSize;
windowManager.center();
windowManager.focus();
}
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: const Color(0xff272b38),
body: Padding(
padding: const EdgeInsets.all( 140 ),
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
SizedBox(
width: PlatformUtils.isPhoneWeb(context) ? MediaQuery.of(context).size.width - 40 : 400,
child: AccountNumberLoginWidget(
loginTap: Login,
),
),
],
),
),
);
}
/// 登录
Login(String account, String password) {
ToastUtils.showLoading();
/// 发送登录消息
LoginSocketUtils.getInstance().login(account, password,(data){
ToastUtils.dismissLoading();
if(data['err'] == 1){
ToastUtils.showToast('登录失败!请检查账号和密码');
return;
}
/// 登录服务心跳
LoginSocketUtils.getInstance().heartbeat();
/// 同步socket
SocketUtils.getInstance().connect();
SocketUtils.getInstance().heartbeat();
Navigator.pushAndRemoveUntil(
context,
MaterialPageRoute(builder: (_) => const WindowsPage()),
(route) => false);
});
}
}