97 lines
2.4 KiB
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);
|
||
|
|
|
||
|
|
});
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|