opt mobile chat message store

Signed-off-by: 21pages <pages21@163.com>
This commit is contained in:
21pages
2023-07-09 19:14:57 +08:00
parent 89b3e68788
commit 65529b10b6
8 changed files with 139 additions and 70 deletions

View File

@@ -37,6 +37,7 @@ class ConnectionPage extends StatefulWidget implements PageShape {
class _ConnectionPageState extends State<ConnectionPage> {
/// Controller for the id input bar.
final _idController = IDTextEditingController();
final RxBool _idEmpty = true.obs;
/// Update url. If it's not null, means an update is available.
var _updateUrl = '';
@@ -60,6 +61,10 @@ class _ConnectionPageState extends State<ConnectionPage> {
if (_updateUrl.isNotEmpty) setState(() {});
});
}
_idController.addListener(() {
_idEmpty.value = _idController.text.isEmpty;
});
}
@override
@@ -158,6 +163,14 @@ class _ConnectionPageState extends State<ConnectionPage> {
),
),
),
Obx(() => Offstage(
offstage: _idEmpty.value,
child: IconButton(
onPressed: () {
_idController.clear();
},
icon: Icon(Icons.clear, color: MyTheme.darkGray)),
)),
SizedBox(
width: 60,
height: 60,

View File

@@ -40,7 +40,7 @@ class _HomePageState extends State<HomePage> {
_pages.clear();
_pages.add(ConnectionPage());
if (isAndroid) {
_pages.addAll([ChatPage(), ServerPage()]);
_pages.addAll([ChatPage(type: ChatPageType.mobileMain), ServerPage()]);
}
_pages.add(SettingsPage());
}

View File

@@ -351,8 +351,8 @@ class _RemotePageState extends State<RemotePage> {
color: Colors.white,
icon: Icon(Icons.message),
onPressed: () {
gFFI.chatModel
.changeCurrentID(ChatModel.clientModeID);
gFFI.chatModel.changeCurrentID(MessageKey(
widget.id, ChatModel.clientModeID));
gFFI.chatModel.toggleChatOverlay();
},
)

View File

@@ -3,6 +3,7 @@ import 'dart:async';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_hbb/mobile/widgets/dialog.dart';
import 'package:flutter_hbb/models/chat_model.dart';
import 'package:get/get.dart';
import 'package:provider/provider.dart';
@@ -419,7 +420,8 @@ class ConnectionManager extends StatelessWidget {
? const SizedBox.shrink()
: IconButton(
onPressed: () {
gFFI.chatModel.changeCurrentID(client.id);
gFFI.chatModel.changeCurrentID(
MessageKey(client.peerId, client.id));
final bar = navigationBarKey.currentWidget;
if (bar != null) {
bar as BottomNavigationBar;