mobile show chat icon overlay on main page

Signed-off-by: 21pages <pages21@163.com>
This commit is contained in:
21pages 2023-07-10 21:58:27 +08:00
parent 745f33a8c1
commit fcf6b5466a
3 changed files with 12 additions and 4 deletions

View File

@ -1,4 +1,5 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_hbb/common/widgets/overlay.dart';
import 'package:flutter_hbb/mobile/pages/server_page.dart'; import 'package:flutter_hbb/mobile/pages/server_page.dart';
import 'package:flutter_hbb/mobile/pages/settings_page.dart'; import 'package:flutter_hbb/mobile/pages/settings_page.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
@ -25,6 +26,7 @@ class _HomePageState extends State<HomePage> {
var _selectedIndex = 0; var _selectedIndex = 0;
int get selectedIndex => _selectedIndex; int get selectedIndex => _selectedIndex;
final List<PageShape> _pages = []; final List<PageShape> _pages = [];
final _blockableOverlayState = BlockableOverlayState();
void refreshPages() { void refreshPages() {
setState(() { setState(() {
@ -36,6 +38,7 @@ class _HomePageState extends State<HomePage> {
void initState() { void initState() {
super.initState(); super.initState();
initPages(); initPages();
_blockableOverlayState.applyFfi(gFFI);
} }
void initPages() { void initPages() {

View File

@ -43,8 +43,6 @@ class _RemotePageState extends State<RemotePage> {
double _mouseScrollIntegral = 0; // mouse scroll speed controller double _mouseScrollIntegral = 0; // mouse scroll speed controller
Orientation? _currentOrientation; Orientation? _currentOrientation;
final _blockableOverlayState = BlockableOverlayState();
final keyboardVisibilityController = KeyboardVisibilityController(); final keyboardVisibilityController = KeyboardVisibilityController();
late final StreamSubscription<bool> keyboardSubscription; late final StreamSubscription<bool> keyboardSubscription;
final FocusNode _mobileFocusNode = FocusNode(); final FocusNode _mobileFocusNode = FocusNode();
@ -70,7 +68,6 @@ class _RemotePageState extends State<RemotePage> {
gFFI.qualityMonitorModel.checkShowQualityMonitor(sessionId); gFFI.qualityMonitorModel.checkShowQualityMonitor(sessionId);
keyboardSubscription = keyboardSubscription =
keyboardVisibilityController.onChange.listen(onSoftKeyboardChanged); keyboardVisibilityController.onChange.listen(onSoftKeyboardChanged);
_blockableOverlayState.applyFfi(gFFI);
initSharedStates(widget.id); initSharedStates(widget.id);
gFFI.chatModel gFFI.chatModel
.changeCurrentKey(MessageKey(widget.id, ChatModel.clientModeID)); .changeCurrentKey(MessageKey(widget.id, ChatModel.clientModeID));

View File

@ -70,6 +70,7 @@ class ChatModel with ChangeNotifier {
TextEditingController textController = TextEditingController(); TextEditingController textController = TextEditingController();
RxInt mobileUnreadSum = 0.obs; RxInt mobileUnreadSum = 0.obs;
MessageKey? latestReceivedKey;
@override @override
void dispose() { void dispose() {
@ -194,6 +195,12 @@ class ChatModel with ChangeNotifier {
final overlayState = _blockableOverlayState?.state; final overlayState = _blockableOverlayState?.state;
if (overlayState == null) return; if (overlayState == null) return;
if (isMobile &&
!gFFI.chatModel.currentKey.isOut && // not in remote page
gFFI.chatModel.latestReceivedKey != null) {
gFFI.chatModel.changeCurrentKey(gFFI.chatModel.latestReceivedKey!);
gFFI.chatModel.mobileClearClientUnread(gFFI.chatModel.currentKey.connId);
}
final overlay = OverlayEntry(builder: (context) { final overlay = OverlayEntry(builder: (context) {
return Listener( return Listener(
onPointerDown: (_) { onPointerDown: (_) {
@ -337,7 +344,7 @@ class ChatModel with ChangeNotifier {
final messagekey = MessageKey(peerId, id); final messagekey = MessageKey(peerId, id);
// mobile: first message show overlay icon // mobile: first message show overlay icon
if (!isDesktop && chatIconOverlayEntry == null && id == clientModeID) { if (!isDesktop && chatIconOverlayEntry == null) {
showChatIconOverlay(); showChatIconOverlay();
} }
// show chat page // show chat page
@ -404,6 +411,7 @@ class ChatModel with ChangeNotifier {
_currentKey = messagekey; _currentKey = messagekey;
mobileClearClientUnread(messagekey.connId); mobileClearClientUnread(messagekey.connId);
} }
latestReceivedKey = messagekey;
notifyListeners(); notifyListeners();
} }