fix(player): 返回键仅收起评论输入键盘
This commit is contained in:
1 parent
a66cdb2e1b
commit
ea1a9f424b
2 files changed
+39
-24
No files matched your search
@@ -4,6 +4,7 @@ import 'dart:async';
|
||||
import 'dart:math' as math;
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
import '../../../core/data/models/comment.dart';
|
||||
@@ -202,7 +203,12 @@ class _DramaCommentsSheetState extends State<DramaCommentsSheet> {
|
||||
return PopScope(
|
||||
canPop: _composerOverlay == null,
|
||||
onPopInvokedWithResult: (didPop, _) {
|
||||
if (!didPop && _composerOverlay != null) _closeComposer();
|
||||
if (!didPop && _composerOverlay != null) {
|
||||
FocusManager.instance.primaryFocus?.unfocus();
|
||||
unawaited(
|
||||
SystemChannels.textInput.invokeMethod<void>('TextInput.hide'),
|
||||
);
|
||||
}
|
||||
},
|
||||
child: content,
|
||||
);
|
||||
|
||||
@@ -549,32 +549,41 @@ void main() {
|
||||
expect(sheet, findsNothing);
|
||||
});
|
||||
|
||||
testWidgets(
|
||||
'should_close_composer_overlay_on_back_without_closing_comments',
|
||||
(tester) async {
|
||||
final repository = FakeCommentRepository(
|
||||
pages: [
|
||||
CommentPage(
|
||||
comments: [commentFixture(id: '10', content: 'A comment')],
|
||||
),
|
||||
],
|
||||
);
|
||||
testWidgets('should_hide_keyboard_on_back_without_closing_composer_overlay', (
|
||||
tester,
|
||||
) async {
|
||||
final repository = FakeCommentRepository(
|
||||
pages: [
|
||||
CommentPage(
|
||||
comments: [commentFixture(id: '10', content: 'A comment')],
|
||||
),
|
||||
],
|
||||
);
|
||||
|
||||
await _pumpSheet(tester, repository: repository);
|
||||
await tester.tap(find.byKey(const Key('comment-input-placeholder')));
|
||||
await tester.pumpAndSettle();
|
||||
await _pumpSheet(tester, repository: repository);
|
||||
await tester.tap(find.byKey(const Key('comment-input-placeholder')));
|
||||
await tester.pumpAndSettle();
|
||||
|
||||
final sheet = find.byKey(const Key('player-comments-sheet'));
|
||||
final composer = find.byKey(const Key('comment-composer-sheet'));
|
||||
expect(sheet, findsOneWidget);
|
||||
expect(composer, findsOneWidget);
|
||||
final sheet = find.byKey(const Key('player-comments-sheet'));
|
||||
final composer = find.byKey(const Key('comment-composer-sheet'));
|
||||
expect(sheet, findsOneWidget);
|
||||
expect(composer, findsOneWidget);
|
||||
final input = find.byKey(const Key('comment-composer-input'));
|
||||
await tester.tap(input);
|
||||
await tester.pump();
|
||||
expect(tester.widget<TextField>(input).focusNode?.hasFocus, isTrue);
|
||||
|
||||
await tester.binding.handlePopRoute();
|
||||
await tester.pumpAndSettle();
|
||||
expect(sheet, findsOneWidget);
|
||||
expect(composer, findsNothing);
|
||||
},
|
||||
);
|
||||
await tester.binding.handlePopRoute();
|
||||
await tester.pumpAndSettle();
|
||||
expect(sheet, findsOneWidget);
|
||||
expect(composer, findsOneWidget);
|
||||
expect(tester.widget<TextField>(input).focusNode?.hasFocus, isFalse);
|
||||
|
||||
await tester.tapAt(const Offset(20, 20));
|
||||
await tester.pumpAndSettle();
|
||||
expect(sheet, findsOneWidget);
|
||||
expect(composer, findsNothing);
|
||||
});
|
||||
|
||||
testWidgets('should_use_polished_comment_sizes', (tester) async {
|
||||
final repository = FakeCommentRepository(
|
||||
|
||||
Reference in new issue
Block a user