mobile show chat icon overlay on main page
Signed-off-by: 21pages <pages21@163.com>
This commit is contained in:
parent
745f33a8c1
commit
fcf6b5466a
@ -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() {
|
||||||
|
@ -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));
|
||||||
|
@ -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();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user