测试是检查是否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();
});
});
}