mirror of
https://github.com/EasyTier/astral.git
synced 2025-05-19 10:30:24 +00:00
1
This commit is contained in:
@@ -87,6 +87,11 @@ class _HomePageState extends State<HomePage> {
|
||||
late final TextEditingController _roomPasswordController;
|
||||
late final TextEditingController _usernameController;
|
||||
late final TextEditingController _virtualIPController;
|
||||
// 添加FocusNode来监听焦点变化
|
||||
late final FocusNode _virtualIPFocusNode;
|
||||
late final FocusNode _usernameControllerFocusNode;
|
||||
late final FocusNode _roomNameControllerFocusNode;
|
||||
late final FocusNode _roomPasswordControllerFocusNode;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
@@ -97,6 +102,20 @@ class _HomePageState extends State<HomePage> {
|
||||
_usernameController = TextEditingController(text: username);
|
||||
_virtualIPController = TextEditingController(text: publicIP); // 添加缺失的初始化
|
||||
|
||||
// 初始化FocusNode并添加监听器
|
||||
_virtualIPFocusNode = FocusNode();
|
||||
_virtualIPFocusNode.addListener(_onVirtualIPFocusChange);
|
||||
|
||||
// 初始化用户名、房间名和密码的FocusNode
|
||||
_usernameControllerFocusNode = FocusNode();
|
||||
_usernameControllerFocusNode.addListener(_onUsernameFocusChange);
|
||||
|
||||
_roomNameControllerFocusNode = FocusNode();
|
||||
_roomNameControllerFocusNode.addListener(_onRoomNameFocusChange);
|
||||
|
||||
_roomPasswordControllerFocusNode = FocusNode();
|
||||
_roomPasswordControllerFocusNode.addListener(_onRoomPasswordFocusChange);
|
||||
|
||||
// 修改卡片构建器列表,添加版本信息卡片
|
||||
_cardBuilders = [
|
||||
_buildNetworkStatusCard,
|
||||
@@ -106,6 +125,58 @@ class _HomePageState extends State<HomePage> {
|
||||
];
|
||||
}
|
||||
|
||||
// 添加焦点变化监听方法
|
||||
void _onVirtualIPFocusChange() {
|
||||
if (!_virtualIPFocusNode.hasFocus && !_isAutoIP) {
|
||||
// 当失去焦点且不是自动IP模式时更新值
|
||||
Provider.of<KM>(context, listen: false).virtualIP =
|
||||
_virtualIPController.text;
|
||||
}
|
||||
}
|
||||
|
||||
// 添加用户名焦点变化监听方法
|
||||
void _onUsernameFocusChange() {
|
||||
if (!_usernameControllerFocusNode.hasFocus) {
|
||||
Provider.of<KM>(context, listen: false).username =
|
||||
_usernameController.text;
|
||||
}
|
||||
}
|
||||
|
||||
// 添加房间名焦点变化监听方法
|
||||
void _onRoomNameFocusChange() {
|
||||
if (!_roomNameControllerFocusNode.hasFocus) {
|
||||
Provider.of<KM>(context, listen: false).roomName =
|
||||
_roomNameController.text;
|
||||
}
|
||||
}
|
||||
|
||||
// 添加房间密码焦点变化监听方法
|
||||
void _onRoomPasswordFocusChange() {
|
||||
if (!_roomPasswordControllerFocusNode.hasFocus) {
|
||||
Provider.of<KM>(context, listen: false).roomPassword =
|
||||
_roomPasswordController.text;
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
// 释放资源
|
||||
_virtualIPFocusNode.removeListener(_onVirtualIPFocusChange);
|
||||
_virtualIPFocusNode.dispose();
|
||||
|
||||
// 释放新增的FocusNode资源
|
||||
_usernameControllerFocusNode.removeListener(_onUsernameFocusChange);
|
||||
_usernameControllerFocusNode.dispose();
|
||||
|
||||
_roomNameControllerFocusNode.removeListener(_onRoomNameFocusChange);
|
||||
_roomNameControllerFocusNode.dispose();
|
||||
|
||||
_roomPasswordControllerFocusNode.removeListener(_onRoomPasswordFocusChange);
|
||||
_roomPasswordControllerFocusNode.dispose();
|
||||
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
void toggleRunning() {
|
||||
final km = Provider.of<KM>(context, listen: false);
|
||||
setState(() {
|
||||
@@ -743,6 +814,7 @@ class _HomePageState extends State<HomePage> {
|
||||
// 用户名输入框
|
||||
TextField(
|
||||
controller: _usernameController,
|
||||
focusNode: _usernameControllerFocusNode, // 添加焦点节点
|
||||
enabled: _connectionState != ConnectionState.connected,
|
||||
onEditingComplete: () {
|
||||
// 改为完成编辑时更新
|
||||
@@ -764,6 +836,7 @@ class _HomePageState extends State<HomePage> {
|
||||
Expanded(
|
||||
child: TextField(
|
||||
controller: _virtualIPController,
|
||||
focusNode: _virtualIPFocusNode, // 添加焦点节点
|
||||
enabled: !_isAutoIP &&
|
||||
_connectionState != ConnectionState.connected,
|
||||
onChanged: (value) {
|
||||
@@ -869,6 +942,7 @@ class _HomePageState extends State<HomePage> {
|
||||
// 房间名称输入框
|
||||
TextField(
|
||||
controller: _roomNameController,
|
||||
focusNode: _roomNameControllerFocusNode, // 添加焦点节点
|
||||
enabled: _connectionState != ConnectionState.connected,
|
||||
onEditingComplete: () {
|
||||
// 改为完成编辑时更新
|
||||
@@ -887,6 +961,7 @@ class _HomePageState extends State<HomePage> {
|
||||
// 房间密码输入框
|
||||
TextField(
|
||||
controller: _roomPasswordController,
|
||||
focusNode: _roomPasswordControllerFocusNode, // 添加焦点节点
|
||||
enabled: _connectionState != ConnectionState.connected,
|
||||
onEditingComplete: () {
|
||||
// 改为完成编辑时更新
|
||||
|
||||
@@ -27,10 +27,10 @@ class FloatingCard extends StatefulWidget {
|
||||
this.hoverElevation = 8,
|
||||
this.maxWidth,
|
||||
this.height,
|
||||
this.enable3DEffect = false, // 默认启用3D效果
|
||||
this.enable3DEffect = true, // 默认启用3D效果
|
||||
this.maxRotationDegree = 10, // 默认最大旋转角度为10度
|
||||
this.enableTranslateEffect = false, // 默认启用偏移效果
|
||||
this.maxTranslateDistance = 0.1, // 默认最大偏移距离为5
|
||||
this.enableTranslateEffect = true, // 默认启用偏移效果
|
||||
this.maxTranslateDistance = 5, // 默认最大偏移距离为5
|
||||
this.zTranslation = 10, // 默认Z轴偏移距离为20
|
||||
this.riseOnHover = true, // 默认悬浮时升起
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user