Skip to content

Commit 4ef7589

Browse files
authored
Merge pull request #2021 from jonataslaw/4.5.0
bump to 4.5.0
2 parents aeb8bbf + 3711185 commit 4ef7589

25 files changed

+106
-12
lines changed

CHANGELOG.md

+54
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,57 @@
1+
## [4.5.0] - Big Update
2+
To have a context-free, page-agnostic snackbar, we used OverlayRoute to display a partial route.
3+
However this had several problems:
4+
5+
1: There was no possibility to close the page without closing the snackbar
6+
2: Get.back() could cause problems with tests of Get.isSnackbarOpen not being properly invoked
7+
3: Sometimes when using iOS popGesture with an open snackbar, some visual inconsistency might appear.
8+
4: When going to another route, the snackbar was not displayed on the new page, and if the user clicked on the new route as soon as he received a Snackbar, he could not read it.
9+
10+
We remade the Snackbar from scratch, having its Api based on Overlay, and now opening a Snackbar won't be tied to a route, you can normally navigate routes while a Snackbar is shown at the top (or bottom), and even the PopGesture of the iOS is not influenced by it.
11+
12+
Using Get.back() is handy, it's a small command, which closes routes, dialogs, snackbars, bottomsheets, etc, however Getx 5 will prioritize code safety, and splitting will reduce the check code as well. Currently we have to check if a snackbar is open, to close the snackbar and prevent the app from going back a page, all this boilerplate code will be removed, at the cost of having what it closes in front of Get.back command.
13+
14+
For backwards compatibility, Get.back() still works for closing routes and overlays, however two new commands have been added: Get.closeCurrentSnackbar() and Get.closeAllSnackbars().
15+
Maybe we will have a clearer api in GetX 5, and maybe Get.back() will continue to do everything like it does today. The community will be consulted about the desired api. However version 5 will definitely have commands like: Get.closeCurrentSnackbar, Get.closeCurrentDialog etc. There is also the possibility to close a specific snackbar using the return of Get.snackbar, which will no longer return a void, and now return a SnackbarController.
16+
17+
Snackbars now also have a Queue, and no longer stack one on top of the other, preventing viewing. GetX now has flexible, customizable, route-independent, and completely stable Snackbars.
18+
19+
Fixed bugs where the snackbar showed an error in debug mode for a fraction of a second. We found that Flutter has a bug with blur below 0.001, so we set the minimum overlayBlur value to this value if it is ==true.
20+
21+
Errors with internationalization were also fixed, where if you are in UK, and the app had the en_US language, you didn't have American English by default. Now, if the country code is not present, it will automatically fetch the language code before fetching a fallbackLanguage.
22+
23+
Update locale also now returns a Future, allowing you to perform an action only when the language has already changed (@MHosssam)
24+
25+
We are very happy to announce that GetX is now documented in Japanese as well, thanks to (@toshi-kuji)
26+
27+
GetX has always been focused on transparency. You can tell what's going on with your app just by reading the logs on the console. However, these logs shouldn't appear in production, so it now only appears in debug mode (@maxzod)
28+
29+
@maxzod has also started translating the docs into Arabic, we hope the documentation will be complete soon.
30+
31+
Some remaining package logs have been moved to Get.log (@gairick-saha)
32+
33+
RxList.removeWhere received performance optimizations (@zuvola)
34+
35+
Optimizations in GetConnect and added the ability to modify all request items in GetConnect (@rodrigorahman)
36+
37+
The current route could be inconsistent if a dialog were opened after a transition, fixed by @xiangzy1
38+
39+
Fixed try/catch case missed in socket_notifier (@ShookLyngs)
40+
41+
Also we had fixes in the docs: @DeathGun3344 @pinguluk
42+
43+
GetX also surpassed the incredible mark of more than 7000 likes, being the most liked package in all pub.dev, went from 99% to 100% popularity, and has more than 5.3k stars on github. Documentation is now available in 12 languages, and we're happy for all the engagement from your community.
44+
45+
This update is a preparation update for version 5, which will be released later this year.
46+
47+
Breaking and Depreciation:
48+
GetBar is now deprecated, use GetSnackbar instead.
49+
dismissDirection now gets a DismissDirection, making the Snackbar more customizable.
50+
51+
52+
53+
54+
155
## [4.3.8]
256
- Fix nav2 toNamed remove the route
357

README-ar.md

+2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
![](https://raw.githubusercontent.com/jonataslaw/getx-community/master/get.png)
22

33
[![pub package](https://img.shields.io/pub/v/get.svg?label=get&color=blue)](https://pub.dev/packages/get)
4+
[![popularity](https://badges.bar/get/popularity)](https://pub.dev/packages/sentry/score)
45
[![likes](https://badges.bar/get/likes)](https://pub.dev/packages/get/score)
6+
[![pub points](https://badges.bar/get/pub%20points)](https://pub.dev/packages/get/score)
57
![building](https://github.com/jonataslaw/get/workflows/build/badge.svg)
68
[![style: effective dart](https://img.shields.io/badge/style-effective_dart-40c4ff.svg)](https://pub.dev/packages/effective_dart)
79
[![Discord Shield](https://img.shields.io/discord/722900883784073290.svg?logo=discord)](https://discord.com/invite/9Hpt99N)

README-es.md

+3
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@
33
*Idiomas: Español (este archivo), [Vietnamita](README-vi.md), [Indonesio](README.id-ID.md), [Urdu](README.ur-PK.md), [Lengua china](README.zh-cn.md), [Inglés](README.md), [Portugués de Brasil](README.pt-br.md), [Ruso](README.ru.md), [Polaco](README.pl.md), [Coreano](README.ko-kr.md), [Francés](README-fr.md).*
44

55
[![pub package](https://img.shields.io/pub/v/get.svg?label=get&color=blue)](https://pub.dev/packages/get)
6+
[![popularity](https://badges.bar/get/popularity)](https://pub.dev/packages/sentry/score)
7+
[![likes](https://badges.bar/get/likes)](https://pub.dev/packages/get/score)
8+
[![pub points](https://badges.bar/get/pub%20points)](https://pub.dev/packages/get/score)
69
![building](https://github.com/jonataslaw/get/workflows/build/badge.svg)
710
[![style: effective dart](https://img.shields.io/badge/style-effective_dart-40c4ff.svg)](https://pub.dev/packages/effective_dart)
811
[![Discord Shield](https://img.shields.io/discord/722900883784073290.svg?logo=discord)](https://discord.com/invite/9Hpt99N)

README-fr.md

+2
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@
33
**Langues: Français (Ce fichier), [Anglais](README.md), [Vietnamien](README-vi.md), [Indonésien](README.id-ID.md), [Urdu](README.ur-PK.md), [Chinois](README.zh-cn.md), [Portuguais du Brésil](README.pt-br.md), [Espagnol](README-es.md), [Russe](README.ru.md), [Polonais](README.pl.md), [Koréen](README.ko-kr.md).**
44

55
[![pub package](https://img.shields.io/pub/v/get.svg?label=get&color=blue)](https://pub.dev/packages/get)
6+
[![popularity](https://badges.bar/get/popularity)](https://pub.dev/packages/sentry/score)
67
[![likes](https://badges.bar/get/likes)](https://pub.dev/packages/get/score)
8+
[![pub points](https://badges.bar/get/pub%20points)](https://pub.dev/packages/get/score)
79
![building](https://github.com/jonataslaw/get/workflows/build/badge.svg)
810
[![style: effective dart](https://img.shields.io/badge/style-effective_dart-40c4ff.svg)](https://pub.dev/packages/effective_dart)
911
[![Discord Shield](https://img.shields.io/discord/722900883784073290.svg?logo=discord)](https://discord.com/invite/9Hpt99N)

README-vi.md

+2
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@
33
**Ngôn ngữ: Tiếng Việt (file này), [English](README.md), [Indonesian](README.id-ID.md), [Urdu](README.ur-PK.md), [Chinese](README.zh-cn.md), [Brazilian Portuguese](README.pt-br.md), [Spanish](README-es.md), [Russian](README.ru.md), [Polish](README.pl.md), [Korean](README.ko-kr.md), [French](README-fr.md).**
44

55
[![pub package](https://img.shields.io/pub/v/get.svg?label=get&color=blue)](https://pub.dev/packages/get)
6+
[![popularity](https://badges.bar/get/popularity)](https://pub.dev/packages/sentry/score)
67
[![likes](https://badges.bar/get/likes)](https://pub.dev/packages/get/score)
8+
[![pub points](https://badges.bar/get/pub%20points)](https://pub.dev/packages/get/score)
79
![building](https://github.com/jonataslaw/get/workflows/build/badge.svg)
810
[![style: effective dart](https://img.shields.io/badge/style-effective_dart-40c4ff.svg)](https://pub.dev/packages/effective_dart)
911
[![Discord Shield](https://img.shields.io/discord/722900883784073290.svg?logo=discord)](https://discord.com/invite/9Hpt99N)

README.id-ID.md

+2
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@
33
**Bahasa: Indonesia (file ini), [Inggris](README.md), [Orang Vietnam](README-vi.md), [Urdu](README.ur-PK.md), [China](README.zh-cn.md), [Portugis (Brazil)](README.pt-br.md), [Spanyol](README-es.md), [Russia](README.ru.md), [Polandia](README.pl.md), [Korea](README.ko-kr.md), [French](README-fr.md)**
44

55
[![pub package](https://img.shields.io/pub/v/get.svg?label=get&color=blue)](https://pub.dev/packages/get)
6+
[![popularity](https://badges.bar/get/popularity)](https://pub.dev/packages/sentry/score)
67
[![likes](https://badges.bar/get/likes)](https://pub.dev/packages/get/score)
8+
[![pub points](https://badges.bar/get/pub%20points)](https://pub.dev/packages/get/score)
79
![building](https://github.com/jonataslaw/get/workflows/build/badge.svg)
810
[![style: effective dart](https://img.shields.io/badge/style-effective_dart-40c4ff.svg)](https://pub.dev/packages/effective_dart)
911
[![Discord Shield](https://img.shields.io/discord/722900883784073290.svg?logo=discord)](https://discord.com/invite/9Hpt99N)

README.ja-JP.md

+2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
![](https://raw.githubusercontent.com/jonataslaw/getx-community/master/get.png)
22

33
[![pub package](https://img.shields.io/pub/v/get.svg?label=get&color=blue)](https://pub.dev/packages/get)
4+
[![popularity](https://badges.bar/get/popularity)](https://pub.dev/packages/sentry/score)
45
[![likes](https://badges.bar/get/likes)](https://pub.dev/packages/get/score)
6+
[![pub points](https://badges.bar/get/pub%20points)](https://pub.dev/packages/get/score)
57
![building](https://github.com/jonataslaw/get/workflows/build/badge.svg)
68
[![style: effective dart](https://img.shields.io/badge/style-effective_dart-40c4ff.svg)](https://pub.dev/packages/effective_dart)
79
[![Discord Shield](https://img.shields.io/discord/722900883784073290.svg?logo=discord)](https://discord.com/invite/9Hpt99N)

README.ko-kr.md

+2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
![](https://raw.githubusercontent.com/jonataslaw/getx-community/master/get.png)
22

33
[![pub package](https://img.shields.io/pub/v/get.svg?label=get&color=blue)](https://pub.dev/packages/get)
4+
[![popularity](https://badges.bar/get/popularity)](https://pub.dev/packages/sentry/score)
45
[![likes](https://badges.bar/get/likes)](https://pub.dev/packages/get/score)
6+
[![pub points](https://badges.bar/get/pub%20points)](https://pub.dev/packages/get/score)
57
![building](https://github.com/jonataslaw/get/workflows/build/badge.svg)
68
[![style: effective dart](https://img.shields.io/badge/style-effective_dart-40c4ff.svg)](https://pub.dev/packages/effective_dart)
79
[![Discord Shield](https://img.shields.io/discord/722900883784073290.svg?logo=discord)](https://discord.com/invite/9Hpt99N)

README.md

+2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
![](https://raw.githubusercontent.com/jonataslaw/getx-community/master/get.png)
22

33
[![pub package](https://img.shields.io/pub/v/get.svg?label=get&color=blue)](https://pub.dev/packages/get)
4+
[![popularity](https://badges.bar/get/popularity)](https://pub.dev/packages/sentry/score)
45
[![likes](https://badges.bar/get/likes)](https://pub.dev/packages/get/score)
6+
[![pub points](https://badges.bar/get/pub%20points)](https://pub.dev/packages/get/score)
57
![building](https://github.com/jonataslaw/get/workflows/build/badge.svg)
68
[![style: effective dart](https://img.shields.io/badge/style-effective_dart-40c4ff.svg)](https://pub.dev/packages/effective_dart)
79
[![Discord Shield](https://img.shields.io/discord/722900883784073290.svg?logo=discord)](https://discord.com/invite/9Hpt99N)

README.pl.md

+3
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@
33
*Languages: [English](README.md), [Wietnamski](README-vi.md), [Indonezyjski](README.id-ID.md), [Urdu](README.ur-PK.md), [Język chiński](README.zh-cn.md), [Brazilian Portuguese](README.pt-br.md), [Spanish](README-es.md), [Russian](README.ru.md), Polish (Jesteś tu), [Koreański](README.ko-kr.md), [French](README-fr.md)*
44

55
[![pub package](https://img.shields.io/pub/v/get.svg?label=get&color=blue)](https://pub.dev/packages/get)
6+
[![popularity](https://badges.bar/get/popularity)](https://pub.dev/packages/sentry/score)
7+
[![likes](https://badges.bar/get/likes)](https://pub.dev/packages/get/score)
8+
[![pub points](https://badges.bar/get/pub%20points)](https://pub.dev/packages/get/score)
69
![building](https://github.com/jonataslaw/get/workflows/build/badge.svg)
710
[![style: effective dart](https://img.shields.io/badge/style-effective_dart-40c4ff.svg)](https://pub.dev/packages/effective_dart)
811
[![Discord Shield](https://img.shields.io/discord/722900883784073290.svg?logo=discord)](https://discord.com/invite/9Hpt99N)

README.pt-br.md

+2
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@
33
**Idiomas: [Inglês](README.md), [Vietnamita](README-vi.md), [Indonésia](README.id-ID.md), [Urdu](README.ur-PK.md), [Chinês](README.zh-cn.md), Português (este arquivo), [Espanhol](README-es.md), [Russo](README.ru.md), [Polonês](README.pl.md), [Coreano](README.ko-kr.md), [Francês](README-fr.md)**
44

55
[![pub package](https://img.shields.io/pub/v/get.svg?label=get&color=blue)](https://pub.dev/packages/get)
6+
[![popularity](https://badges.bar/get/popularity)](https://pub.dev/packages/sentry/score)
67
[![likes](https://badges.bar/get/likes)](https://pub.dev/packages/get/score)
8+
[![pub points](https://badges.bar/get/pub%20points)](https://pub.dev/packages/get/score)
79
![building](https://github.com/jonataslaw/get/workflows/build/badge.svg)
810
[![style: effective dart](https://img.shields.io/badge/style-effective_dart-40c4ff.svg)](https://pub.dev/packages/effective_dart)
911
[![Discord Shield](https://img.shields.io/discord/722900883784073290.svg?logo=discord)](https://discord.com/invite/9Hpt99N)

README.ru.md

+3
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@
33
_Языки: Русский (этот файл), [вьетнамский](README-vi.md), [индонезийский](README.id-ID.md), [урду](README.ur-PK.md), [Английский](README.md), [Китайский](README.zh-cn.md), [Бразильский Португальский](README.pt-br.md), [Испанский](README-es.md), [Польский](README.pl.md), [Kорейский](README.ko-kr.md), [French](README-fr.md)._
44

55
[![pub package](https://img.shields.io/pub/v/get.svg?label=get&color=blue)](https://pub.dev/packages/get)
6+
[![popularity](https://badges.bar/get/popularity)](https://pub.dev/packages/sentry/score)
7+
[![likes](https://badges.bar/get/likes)](https://pub.dev/packages/get/score)
8+
[![pub points](https://badges.bar/get/pub%20points)](https://pub.dev/packages/get/score)
69
![building](https://github.com/jonataslaw/get/workflows/build/badge.svg)
710
[![style: effective dart](https://img.shields.io/badge/style-effective_dart-40c4ff.svg)](https://pub.dev/packages/effective_dart)
811
[![Discord Shield](https://img.shields.io/discord/722900883784073290.svg?logo=discord)](https://discord.com/invite/9Hpt99N)

README.ur-PK.md

+2
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@
33
**🌎 اردو ( Selected ✔) [| انگریزی |](README.md) [| ویتنامی |](README-vi.md) [| انڈونیشی |](README.id-ID.md) [چینی |](README.zh-cn.md) [برازیلی پرتگالی |](README.pt-br.md) [ہسپانوی |](README-es.md) [روسی |](README.ru.md) [پولش |](README.pl.md) [کورین |](README.ko-kr.md), [French](README-fr.md)**
44

55
[![pub package](https://img.shields.io/pub/v/get.svg?label=get&color=blue)](https://pub.dev/packages/get)
6+
[![popularity](https://badges.bar/get/popularity)](https://pub.dev/packages/sentry/score)
67
[![likes](https://badges.bar/get/likes)](https://pub.dev/packages/get/score)
8+
[![pub points](https://badges.bar/get/pub%20points)](https://pub.dev/packages/get/score)
79
![building](https://github.com/jonataslaw/get/workflows/build/badge.svg)
810
[![style: effective dart](https://img.shields.io/badge/style-effective_dart-40c4ff.svg)](https://pub.dev/packages/effective_dart)
911
[![Discord Shield](https://img.shields.io/discord/722900883784073290.svg?logo=discord)](https://discord.com/invite/9Hpt99N)

README.zh-cn.md

+3
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@
33
_语言: 中文, [英文](README.md), [越南文](README-vi.md), [印度尼西亚](README.id-ID.md), [乌尔都语](README.ur-PK.md), [巴西葡萄牙语](README.pt-br.md), [俄语](README.ru.md), [西班牙语](README-es.md), [波兰语](README.pl.md), [韩国语](README.ko-kr.md), [法语](README-fr.md), [French](README-fr.md)._
44

55
[![pub package](https://img.shields.io/pub/v/get.svg?label=get&color=blue)](https://pub.dev/packages/get)
6+
[![popularity](https://badges.bar/get/popularity)](https://pub.dev/packages/sentry/score)
7+
[![likes](https://badges.bar/get/likes)](https://pub.dev/packages/get/score)
8+
[![pub points](https://badges.bar/get/pub%20points)](https://pub.dev/packages/get/score)
69
![building](https://github.com/jonataslaw/get/workflows/build/badge.svg)
710
[![style: effective dart](https://img.shields.io/badge/style-effective_dart-40c4ff.svg)](https://pub.dev/packages/effective_dart)
811
[![Discord Shield](https://img.shields.io/discord/722900883784073290.svg?logo=discord)](https://discord.com/invite/9Hpt99N)

example/lib/lang/en_US.dart

+2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
// ignore_for_file: file_names
2+
13
const Map<String, String> en_US = {
24
'covid': 'Corona Virus',
35
'total_confirmed': 'Total Confirmed',

example/lib/lang/pt_BR.dart

+2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
// ignore_for_file: file_names
2+
13
const Map<String, String> pt_BR = {
24
'covid': 'Corona Vírus',
35
'total_confirmed': 'Total confirmado',

example/lib/lang/translation_service.dart

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import 'package:flutter/material.dart';
22
import 'package:get/get.dart';
33

4-
import 'en_US.dart';
5-
import 'pt_BR.dart';
4+
import 'en_us.dart';
5+
import 'pt_br.dart';
66

77
class TranslationService extends Translations {
88
static Locale? get locale => Get.deviceLocale;

example_nav2/lib/app/routes/app_routes.dart

+7-5
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,22 @@
1+
// ignore_for_file: non_constant_identifier_names
2+
13
part of 'app_pages.dart';
24
// DO NOT EDIT. This is code generated via package:get_cli/get_cli.dart
35

46
abstract class Routes {
5-
Routes._();
6-
77
static const HOME = _Paths.HOME;
8-
static const PROFILE = _Paths.HOME + _Paths.PROFILE;
98

9+
static const PROFILE = _Paths.HOME + _Paths.PROFILE;
1010
static const SETTINGS = _Paths.SETTINGS;
1111

1212
static const PRODUCTS = _Paths.HOME + _Paths.PRODUCTS;
13-
static String PRODUCT_DETAILS(String productId) => '$PRODUCTS/$productId';
13+
1414
static const LOGIN = _Paths.LOGIN;
15+
static const DASHBOARD = _Paths.HOME + _Paths.DASHBOARD;
16+
Routes._();
1517
static String LOGIN_THEN(String afterSuccessfulLogin) =>
1618
'$LOGIN?then=${Uri.encodeQueryComponent(afterSuccessfulLogin)}';
17-
static const DASHBOARD = _Paths.HOME + _Paths.DASHBOARD;
19+
static String PRODUCT_DETAILS(String productId) => '$PRODUCTS/$productId';
1820
}
1921

2022
abstract class _Paths {

lib/get_connect/sockets/src/sockets_html.dart

+1
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@ class BaseWebSocket {
9292
socketNotifier!.addMessages(fn);
9393
}
9494

95+
// ignore: use_setters_to_change_properties
9596
void onOpen(OpenSocket fn) {
9697
socketNotifier!.open = fn;
9798
}

lib/get_connect/sockets/src/sockets_io.dart

+1
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@ class BaseWebSocket {
8484
socketNotifier!.addMessages(fn);
8585
}
8686

87+
// ignore: use_setters_to_change_properties
8788
void onOpen(OpenSocket fn) {
8889
socketNotifier!.open = fn;
8990
}

lib/get_navigation/src/extension_navigation.dart

-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import 'dart:ui' as ui;
22

3-
import 'package:flutter/cupertino.dart';
43
import 'package:flutter/material.dart';
54
import 'package:flutter/scheduler.dart';
65

@@ -521,7 +520,6 @@ extension GetNavigation on GetInterface {
521520
routeName ??= "/${page.runtimeType}";
522521
routeName = _cleanRouteName(routeName);
523522
if (preventDuplicates && routeName == currentRoute) {
524-
CupertinoPageRoute ds;
525523
return null;
526524
}
527525
return global(id).currentState?.push<T>(

pubspec.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name: get
22
description: Open screens/snackbars/dialogs without context, manage states and inject dependencies easily with GetX.
3-
version: 4.3.8
3+
version: 4.5.0
44
homepage: https://github.com/jonataslaw/getx
55

66
environment:

test/navigation/get_main_test.dart

-1
Original file line numberDiff line numberDiff line change
@@ -480,7 +480,6 @@ void main() {
480480

481481
expect(find.byType(FirstScreen), findsOneWidget);
482482
});
483-
484483
}
485484

486485
class FirstScreen extends StatelessWidget {

test/navigation/routes_test.dart

+2-1
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,8 @@ void main() {
3939
await gesture.up();
4040
await tester.pump();
4141
expect(
42-
// The 'route' route has been dragged to the right, halfway across the screen
42+
// The 'route' route has been dragged to the right, halfway across
43+
// the screen
4344
tester.getTopLeft(find.ancestor(
4445
of: find.text('route'),
4546
matching: find.byType(CupertinoPageScaffold))),

0 commit comments

Comments
 (0)