Мне нужно, чтобы экран в тесте выглядел так же, как на физическом устройстве (или симуляторе).Как мне это сделать?В моем случае идентификатор устройства Iphone SE.
Я написал тест, который сохраняет снимок экрана на диск:
testWidgets('test', (WidgetTester tester) async {
final AutomatedTestWidgetsFlutterBinding binding = tester.binding;
binding.renderView.configuration = TestViewConfiguration(size: Size(640, 1136));
var widget = Scaffold(
appBar: AppBar(title: Text('title'),),
body: Column(children: <Widget>[
RaisedButton(
child: Text('button'),
onPressed: () {},)
],),
);
var key = new GlobalKey();
await tester.pumpWidget(
MaterialApp(home: RepaintBoundary(key: key, child: widget),),
);
await tester.pumpAndSettle();
await tester.runAsync(() async {
RenderRepaintBoundary boundary = key.currentContext.findRenderObject();
var image = await boundary.toImage();
var byteData = await image.toByteData(format: ImageByteFormat.png);
var pngBytes = byteData.buffer.asUint8List();
await File('screen.png').writeAsBytes(pngBytes);
});
});
, если использовать ViewConfiguration с devicePixelRatio вместо TestViewConfiguration, devicePixelRatio игнорируя
MediaQuery тоже не работает, если обернуть MaterialApp
панель приложения и кнопку меньше, чем на симуляторе
экран из теста:
, но ожидается (виджетышкала):