#flutter-getx
Вопрос:
Привет, я использую промежуточное программное обеспечение getx flutter . о предоставлении списка промежуточных программ на страницу. Как подтвердить завершение одного промежуточного программного обеспечения, чтобы getx мог перейти к следующему.
например: домашняя страница содержит два промежуточных ПО 1. первая средняя страница 2. вторая средняя страница при вызове домашней страницы приложение перенаправит на первую среднюю страницу. теперь, закончив свою задачу на первой средней странице, как мне попросить приложение перенаправить на вторую среднюю страницу.
Ответ №1:
главная.дротик
routingCallback:
Get.find<AppService>(tag: Const.appService).routRecord,
app_service.dart
String rout = "";
void routRecord(Routing? r) {
if (r != null) {
if (r.current == Routes.HOME) {
rout = Routes.HOME;
} else if (r.isBack ?? false) {
final pos = rout.lastIndexOf('/');
rout = (pos != -1) ? rout.substring(0, pos) : rout;
} else if (r.current != "") {
rout = rout r.current;
}
}
}
У меня есть путь к страницам, которые я открыл в route.
ie: главная страница/пользователь/профиль
Я легко могу узнать, где я нахожусь, и легко могу перейти на другую страницу.
т. е.: app_service.dart
void _appListener() async {
ReceiveSharingIntent.getTextStream().listen((String value) {
_openPlayer(value);
}, onError: (err) {
Message.show("Error", "Something went wrong");
});
await ReceiveSharingIntent.getInitialText().then((value) {
if (value != null) _openPlayer(value);
});
}
_openPlayer(String url) async {
final id = YoutubePlayerController.convertUrlToId(url);
if (id != null) {
final _routStack = rout.split('/');
final playerIndex = _routStack
.indexWhere((element) => element == Routes.PLAYER.substring(1));
if (playerIndex == -1) {
Get.toNamed(Routes.PLAYER, arguments: [
id,
(await FetchDetails.getDetail(id))?["title"] ?? "",
]);
} else {
final backCount = _routStack.length - playerIndex;
for (int i = 0; i < backCount; i ) {
Get.back();
}
Get.toNamed(Routes.PLAYER, arguments: [
id,
(await FetchDetails.getDetail(id))?["title"] ?? "",
]);
}
} else {
Message.show("Error", "invalid url");
}
}