From bf499f243460a47cf96bd6fe665cc8d9ac930a33 Mon Sep 17 00:00:00 2001 From: Linloir <3145078758@qq.com> Date: Sun, 23 Oct 2022 13:14:48 +0800 Subject: [PATCH] Feature: - Unfoces input box when click image --- lib/chat/cubit/chat_cubit.dart | 7 +++++-- lib/chat/view/common/image_box.dart | 5 ++++- lib/chat/view/input_box/input_box.dart | 3 ++- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/lib/chat/cubit/chat_cubit.dart b/lib/chat/cubit/chat_cubit.dart index def71ff..eee8888 100644 --- a/lib/chat/cubit/chat_cubit.dart +++ b/lib/chat/cubit/chat_cubit.dart @@ -1,7 +1,7 @@ /* * @Author : Linloir * @Date : 2022-10-13 14:03:56 - * @LastEditTime : 2022-10-22 22:46:18 + * @LastEditTime : 2022-10-23 13:07:08 * @Description : */ @@ -38,8 +38,11 @@ class ChatCubit extends Cubit { late final StreamSubscription subscription; final Map messageSendSubscriptionMap = {}; final Map fileFetchSubscriptionMap = {}; + final FocusNode inputNode = FocusNode(); - + void unFocus() { + inputNode.unfocus(); + } Future addMessage(Message message) async { var msg = message; diff --git a/lib/chat/view/common/image_box.dart b/lib/chat/view/common/image_box.dart index a73a6b3..dba9560 100644 --- a/lib/chat/view/common/image_box.dart +++ b/lib/chat/view/common/image_box.dart @@ -1,14 +1,16 @@ /* * @Author : Linloir * @Date : 2022-10-14 17:04:20 - * @LastEditTime : 2022-10-23 11:35:10 + * @LastEditTime : 2022-10-23 13:00:51 * @Description : */ import 'dart:convert'; import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:photo_view/photo_view.dart'; +import 'package:tcp_client/chat/cubit/chat_cubit.dart'; import 'package:tcp_client/chat/model/chat_history.dart'; class ImageBox extends StatelessWidget { @@ -37,6 +39,7 @@ class ImageBox extends StatelessWidget { child: InkWell( splashColor: Colors.white.withOpacity(0.1), onTap: (){ + context.read().unFocus(); var image = history.preCachedImage?.image ?? Image.memory(base64.decode(history.message.contentDecoded)).image; Navigator.of(context).push(MaterialPageRoute( builder:(context) { diff --git a/lib/chat/view/input_box/input_box.dart b/lib/chat/view/input_box/input_box.dart index 3e62218..3c8141b 100644 --- a/lib/chat/view/input_box/input_box.dart +++ b/lib/chat/view/input_box/input_box.dart @@ -1,7 +1,7 @@ /* * @Author : Linloir * @Date : 2022-10-14 17:54:30 - * @LastEditTime : 2022-10-23 10:13:22 + * @LastEditTime : 2022-10-23 13:03:12 * @Description : */ @@ -67,6 +67,7 @@ class InputBox extends StatelessWidget { onChanged: (value) { context.read().onInputChange(MessageInput.dirty(value)); }, + focusNode: context.read().inputNode, maxLines: null, decoration: const InputDecoration( border: UnderlineInputBorder(