问题描述
测试是检查 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 (将#修改为@)