颤振中底片的书写测试

时间:2020-12-22 07:24:39

标签: flutter automated-tests bottom-sheet flutter-test flutter-showmodalbottomsheet

测试是检查 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),
        ),
        buttonKey,
        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,
          -keyboardHeight,
        )),
      );
    }

    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();
    });
  });
}

0 个答案:

没有答案
相关问题