【发布时间】:2021-09-21 19:28:25
【问题描述】:
您好,我正在使用 getx 颤振中间件。关于将中间件列表提供给页面。如何确认一个中间件的结束,以便 getx 可以移动到下一个。
例如:首页有两个中间件 1. 第一个中页 2. 第二个中页 在调用主页时,应用程序将重定向到第一个中页。现在在第一个中页完成我的任务后,我如何要求应用重定向到第二个中页。
【问题讨论】:
标签: flutter-getx
您好,我正在使用 getx 颤振中间件。关于将中间件列表提供给页面。如何确认一个中间件的结束,以便 getx 可以移动到下一个。
例如:首页有两个中间件 1. 第一个中页 2. 第二个中页 在调用主页时,应用程序将重定向到第一个中页。现在在第一个中页完成我的任务后,我如何要求应用重定向到第二个中页。
【问题讨论】:
标签: flutter-getx
main.dart
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;
}
}
}
我有一个在 rout 中打开的页面路径。 即:家庭/用户/个人资料 我可以很容易地知道我在哪里,并且可以很容易地转到另一个页面。
即: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");
}
}
【讨论】: