gpt4 book ai didi

flutter - 如何在小部件测试中找到屏幕外的 ListView 子项?

转载 作者:IT王子 更新时间:2023-10-29 07:22:59 28 4
gpt4 key购买 nike

在 ListView 中显示多个子项时,如果子项不在屏幕上,则小部件测试无法找到它。这是一个完整的例子:

主.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 它会起作用。

有人知道为什么会这样吗?这是一个错误吗?有解决办法吗?

最佳答案

在 Finder 中将 skipOffstate 设置为 false 是一种方法。试试这个:

expect(find.text("Find me!", skipOffstage: false), findsOneWidget);

关于flutter - 如何在小部件测试中找到屏幕外的 ListView 子项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54651878/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com