update desktop and mobile chat message

This commit is contained in:
csf
2022-08-11 10:19:12 +08:00
parent 522c865096
commit 09c80bc585
6 changed files with 151 additions and 126 deletions

View File

@@ -4,10 +4,15 @@ import 'package:flutter_hbb/common.dart';
import 'package:flutter_hbb/models/chat_model.dart';
import 'package:provider/provider.dart';
import '../../models/model.dart';
import 'home_page.dart';
class ChatPage extends StatelessWidget implements PageShape {
late final ChatModel chatModel;
ChatPage({ChatModel? chatModel}) {
this.chatModel = chatModel ?? gFFI.chatModel;
}
@override
final title = translate("Chat");
@@ -19,6 +24,7 @@ class ChatPage extends StatelessWidget implements PageShape {
PopupMenuButton<int>(
icon: Icon(Icons.group),
itemBuilder: (context) {
// only mobile need [appBarActions], just bind gFFI.chatModel
final chatModel = gFFI.chatModel;
return chatModel.messages.entries.map((entry) {
final id = entry.key;
@@ -37,7 +43,7 @@ class ChatPage extends StatelessWidget implements PageShape {
@override
Widget build(BuildContext context) {
return ChangeNotifierProvider.value(
value: gFFI.chatModel,
value: chatModel,
child: Container(
color: MyTheme.grayBg,
child: Consumer<ChatModel>(builder: (context, chatModel, child) {

View File

@@ -3,7 +3,6 @@ import 'package:flutter_hbb/mobile/pages/chat_page.dart';
import 'package:flutter_hbb/mobile/pages/server_page.dart';
import 'package:flutter_hbb/mobile/pages/settings_page.dart';
import '../../common.dart';
import '../widgets/overlay.dart';
import 'connection_page.dart';
abstract class PageShape extends Widget {
@@ -79,8 +78,8 @@ class _HomePageState extends State<HomePage> {
onTap: (index) => setState(() {
// close chat overlay when go chat page
if (index == 1 && _selectedIndex != index) {
hideChatIconOverlay();
hideChatWindowOverlay();
gFFI.chatModel.hideChatIconOverlay();
gFFI.chatModel.hideChatWindowOverlay();
}
_selectedIndex = index;
}),

View File

@@ -96,8 +96,8 @@ class _RemotePageState extends State<RemotePage> {
if (v < 100) {
SystemChrome.setEnabledSystemUIMode(SystemUiMode.manual,
overlays: []);
// [pi.version.isNotEmpty] -> check ready or not,avoid login without soft-keyboard
if (chatWindowOverlayEntry == null &&
// [pi.version.isNotEmpty] -> check ready or not, avoid login without soft-keyboard
if (gFFI.chatModel.chatWindowOverlayEntry == null &&
gFFI.ffiModel.pi.version.isNotEmpty) {
gFFI.invokeMethod("enable_soft_keyboard", false);
}
@@ -453,7 +453,7 @@ class _RemotePageState extends State<RemotePage> {
onPressed: () {
gFFI.chatModel
.changeCurrentID(ChatModel.clientModeID);
toggleChatOverlay();
gFFI.chatModel.toggleChatOverlay();
},
)
]) +