merge: 合并 K86.17 输入弹窗位置固定修正
This commit is contained in:
commit
5b4526cb97
2 files changed
+16
-4
No files matched your search
@@ -39,6 +39,7 @@ class _CommentComposerSheetState extends State<CommentComposerSheet> {
|
|||||||
final _input = TextEditingController();
|
final _input = TextEditingController();
|
||||||
final _inputFocus = FocusNode();
|
final _inputFocus = FocusNode();
|
||||||
final _keyboardInset = KeyboardInsetNotifier.instance;
|
final _keyboardInset = KeyboardInsetNotifier.instance;
|
||||||
|
double _pinnedKeyboardInset = 0;
|
||||||
bool _closing = false;
|
bool _closing = false;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@@ -114,7 +115,8 @@ class _CommentComposerSheetState extends State<CommentComposerSheet> {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
final keyboardHeight = _keyboardHeight(context);
|
final currentKeyboardInset = _keyboardHeight(context);
|
||||||
|
_pinnedKeyboardInset = math.max(_pinnedKeyboardInset, currentKeyboardInset);
|
||||||
final l10n = AppLocalizations.of(context)!;
|
final l10n = AppLocalizations.of(context)!;
|
||||||
final signedIn = context.watch<AuthController>().isSignedIn;
|
final signedIn = context.watch<AuthController>().isSignedIn;
|
||||||
final hasContent = _input.text.trim().isNotEmpty;
|
final hasContent = _input.text.trim().isNotEmpty;
|
||||||
@@ -139,7 +141,7 @@ class _CommentComposerSheetState extends State<CommentComposerSheet> {
|
|||||||
child: AnimatedPadding(
|
child: AnimatedPadding(
|
||||||
duration: const Duration(milliseconds: 200),
|
duration: const Duration(milliseconds: 200),
|
||||||
curve: Curves.easeOut,
|
curve: Curves.easeOut,
|
||||||
padding: EdgeInsets.only(bottom: keyboardHeight),
|
padding: EdgeInsets.only(bottom: _pinnedKeyboardInset),
|
||||||
child: GestureDetector(
|
child: GestureDetector(
|
||||||
behavior: HitTestBehavior.opaque,
|
behavior: HitTestBehavior.opaque,
|
||||||
onTap: () {},
|
onTap: () {},
|
||||||
|
|||||||
@@ -377,8 +377,9 @@ void main() {
|
|||||||
tester.view.viewInsets = const FakeViewPadding(bottom: 180);
|
tester.view.viewInsets = const FakeViewPadding(bottom: 180);
|
||||||
await tester.pump();
|
await tester.pump();
|
||||||
await tester.pump(const Duration(milliseconds: 200));
|
await tester.pump(const Duration(milliseconds: 200));
|
||||||
|
final keyboardUpBottom = tester.getBottomLeft(composer).dy;
|
||||||
expect(tester.getSize(composer).height, closeTo(compactHeight, 0.1));
|
expect(tester.getSize(composer).height, closeTo(compactHeight, 0.1));
|
||||||
expect(tester.getBottomLeft(composer).dy, closeTo(844 - 180, 0.1));
|
expect(keyboardUpBottom, closeTo(844 - 180, 0.1));
|
||||||
expect(
|
expect(
|
||||||
tester.getBottomLeft(composerInput).dy,
|
tester.getBottomLeft(composerInput).dy,
|
||||||
lessThanOrEqualTo(844 - 180),
|
lessThanOrEqualTo(844 - 180),
|
||||||
@@ -388,12 +389,21 @@ void main() {
|
|||||||
tester.view.viewInsets = const FakeViewPadding();
|
tester.view.viewInsets = const FakeViewPadding();
|
||||||
await tester.pumpAndSettle();
|
await tester.pumpAndSettle();
|
||||||
expect(composer, findsOneWidget);
|
expect(composer, findsOneWidget);
|
||||||
expect(tester.getBottomLeft(composer).dy, closeTo(844, 0.1));
|
expect(tester.getBottomLeft(composer).dy, closeTo(keyboardUpBottom, 0.1));
|
||||||
expect(commentsSheet, findsOneWidget);
|
expect(commentsSheet, findsOneWidget);
|
||||||
expect(list, findsOneWidget);
|
expect(list, findsOneWidget);
|
||||||
expect(placeholder, findsOneWidget);
|
expect(placeholder, findsOneWidget);
|
||||||
expect(tester.getRect(commentsSheet), sheetRect);
|
expect(tester.getRect(commentsSheet), sheetRect);
|
||||||
expect(tester.getSize(commentsSheet).height, closeTo(sheetHeight, 0.1));
|
expect(tester.getSize(commentsSheet).height, closeTo(sheetHeight, 0.1));
|
||||||
|
|
||||||
|
await tester.tapAt(const Offset(20, 20));
|
||||||
|
await tester.pumpAndSettle();
|
||||||
|
expect(composer, findsNothing);
|
||||||
|
|
||||||
|
await tester.tap(placeholder);
|
||||||
|
await tester.pumpAndSettle();
|
||||||
|
expect(composer, findsOneWidget);
|
||||||
|
expect(tester.getBottomLeft(composer).dy, closeTo(844, 0.1));
|
||||||
});
|
});
|
||||||
|
|
||||||
testWidgets('should_keep_composer_open_after_input_loses_focus', (
|
testWidgets('should_keep_composer_open_after_input_loses_focus', (
|
||||||
|
|||||||
Reference in new issue
Block a user