颤振中底片的书写测试

问题描述

测试是检查 showModelBottomSheet 是否沿键盘移动,showModelBottomSheet 必须显示键盘上方。

我写了这段代码但失败了。

import 'package:Flutter/material.dart';
import 'package:Flutter/src/widgets/basic.dart';
import 'package:Flutter/src/widgets/framework.dart';
import 'package:Flutter_test/Flutter_test.dart';

void main() {
  group('To Check the Position of showModelBottomSheet on keyboard popup',() {
    late BuildContext savedContext;

    Widget _buildTest(MediaQueryData data,Key buttonKey,Key showModelBottomSheetKey){
      return MaterialApp(
        home: Builder(
          builder: (BuildContext context) {
            return FlatButton(
              key: buttonKey,onpressed: () {
                print(MediaQuery.of(context).size);
                showModalBottomSheet<void>(
                  context: context,builder: (BuildContext context) {
                    savedContext = context;
                    return Container(
                      key: showModelBottomSheetKey,child: const TextField(),);
                  },);
              },child: const Text('Press'),);
          },),);
    }

    Future<void> _runFloatTests(WidgetTester tester,{required Rect defaultRect}) async {
      const double keyboardHeight = 200.0;
      const double viewPadding = 50.0;
      final GlobalKey buttonKey = GlobalKey();
      final GlobalKey showModelBottomSheetKey = GlobalKey();

      // Default without Keyboard
      await tester.pumpWidget(_buildTest(
          const MediaQueryData(
              viewPadding: EdgeInsets.only(bottom: viewPadding)
          ),buttonKey,showModelBottomSheetKey));

      await tester.tap(find.byKey(buttonKey));
      await tester.pumpAndSettle();
      
      print();
      print(tester.getRect(find.byKey(showModelBottomSheetKey)));
      print(rectMoreOrLessEquals(defaultRect));
      print('-------------------');

      expect(
        tester.getRect(find.byKey(showModelBottomSheetKey)),rectMoreOrLessEquals(defaultRect),);

      // Present keyboard and check position,should change
      await tester.pumpWidget(_buildTest(
        const MediaQueryData(
          viewPadding: EdgeInsets.only(bottom: viewPadding),viewInsets: EdgeInsets.only(bottom: keyboardHeight),showModelBottomSheetKey
      ));

      print(tester.getRect(find.byKey(showModelBottomSheetKey)));
      print(rectMoreOrLessEquals(defaultRect.translate(
        0.0,-keyboardHeight,)));
      print('-------------------');

      expect(
        tester.getRect(find.byKey(showModelBottomSheetKey)),rectMoreOrLessEquals(defaultRect.translate(
          0.0,)),);
    }

    testWidgets('',(WidgetTester tester) async {
      const Rect defaultRect = Rect.fromLTRB(0.0,552.0,800.0,600.0);

      await _runFloatTests(tester,defaultRect: defaultRect);
      await tester.pump();
    });
  });
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)