在ListView中显示多个子项时,如果一个子项不在屏幕上,它就无法被小部件测试找到。以下是一个完整的示例:
这个测试失败了,但是如果我将 main.dart 中
有人知道为什么会发生这种情况吗?这是一个 bug 吗?有没有解决的方法?
main.dart
import 'package:flutter/material.dart';
void main() => runApp(App());
class App extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(home: Scaffold(body: Test()));
}
}
class Test extends StatelessWidget {
@override
Widget build(BuildContext context) {
return ListView(
children: <Widget>[
Container(
height: 600,
color: Colors.red,
),
Text("Find me!"),
],
);
}
}
main_test.dart
import 'package:flutter_app/main.dart';
import 'package:flutter_test/flutter_test.dart';
void main() {
testWidgets("Find text", (WidgetTester tester) async {
final testableWidget = App();
await tester.pumpWidget(testableWidget);
expect(find.text("Find me!"), findsOneWidget);
});
}
这个测试失败了,但是如果我将 main.dart 中
Container
的高度更改为 599
就可以通过测试。有人知道为什么会发生这种情况吗?这是一个 bug 吗?有没有解决的方法?