merge: 合并 K86.20 评论输入浮层打开状态修正
This commit is contained in:
commit
e90217bdfd
2 files changed
+39
-24
No files matched your search
@@ -4,6 +4,7 @@ import 'dart:async';
|
|||||||
import 'dart:math' as math;
|
import 'dart:math' as math;
|
||||||
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:flutter/services.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
|
|
||||||
import '../../../core/data/models/comment.dart';
|
import '../../../core/data/models/comment.dart';
|
||||||
@@ -202,7 +203,12 @@ class _DramaCommentsSheetState extends State<DramaCommentsSheet> {
|
|||||||
return PopScope(
|
return PopScope(
|
||||||
canPop: _composerOverlay == null,
|
canPop: _composerOverlay == null,
|
||||||
onPopInvokedWithResult: (didPop, _) {
|
onPopInvokedWithResult: (didPop, _) {
|
||||||
if (!didPop && _composerOverlay != null) _closeComposer();
|
if (!didPop && _composerOverlay != null) {
|
||||||
|
FocusManager.instance.primaryFocus?.unfocus();
|
||||||
|
unawaited(
|
||||||
|
SystemChannels.textInput.invokeMethod<void>('TextInput.hide'),
|
||||||
|
);
|
||||||
|
}
|
||||||
},
|
},
|
||||||
child: content,
|
child: content,
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -549,32 +549,41 @@ void main() {
|
|||||||
expect(sheet, findsNothing);
|
expect(sheet, findsNothing);
|
||||||
});
|
});
|
||||||
|
|
||||||
testWidgets(
|
testWidgets('should_hide_keyboard_on_back_without_closing_composer_overlay', (
|
||||||
'should_close_composer_overlay_on_back_without_closing_comments',
|
tester,
|
||||||
(tester) async {
|
) async {
|
||||||
final repository = FakeCommentRepository(
|
final repository = FakeCommentRepository(
|
||||||
pages: [
|
pages: [
|
||||||
CommentPage(
|
CommentPage(
|
||||||
comments: [commentFixture(id: '10', content: 'A comment')],
|
comments: [commentFixture(id: '10', content: 'A comment')],
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
|
|
||||||
await _pumpSheet(tester, repository: repository);
|
await _pumpSheet(tester, repository: repository);
|
||||||
await tester.tap(find.byKey(const Key('comment-input-placeholder')));
|
await tester.tap(find.byKey(const Key('comment-input-placeholder')));
|
||||||
await tester.pumpAndSettle();
|
await tester.pumpAndSettle();
|
||||||
|
|
||||||
final sheet = find.byKey(const Key('player-comments-sheet'));
|
final sheet = find.byKey(const Key('player-comments-sheet'));
|
||||||
final composer = find.byKey(const Key('comment-composer-sheet'));
|
final composer = find.byKey(const Key('comment-composer-sheet'));
|
||||||
expect(sheet, findsOneWidget);
|
expect(sheet, findsOneWidget);
|
||||||
expect(composer, 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.binding.handlePopRoute();
|
||||||
await tester.pumpAndSettle();
|
await tester.pumpAndSettle();
|
||||||
expect(sheet, findsOneWidget);
|
expect(sheet, findsOneWidget);
|
||||||
expect(composer, findsNothing);
|
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 {
|
testWidgets('should_use_polished_comment_sizes', (tester) async {
|
||||||
final repository = FakeCommentRepository(
|
final repository = FakeCommentRepository(
|
||||||
|
|||||||
Reference in new issue
Block a user