我正在尝试使用 实现从一条导航路线到另一条导航路线的漂亮简单的淡入淡出动画PageRouteBuilder。我希望当前路线完全淡出,然后在旧路线消失后,新路线应该淡入。
到目前为止,在我的 PageRouteBuilder 类中,我可以将新路线从 0 淡入到 1,但我希望旧路线首先完全淡出,然后在旧路线淡出后让新路线淡入。我当前的代码,一旦新路线淡入完成,旧路线就会突然消失。
我还想强调的是,我不希望它们同时淡出/淡入,而是要淡出旧路线,然后淡入以使新路线按顺序发生。
import 'package:flutter/material.dart';
class FadePageTransition extends PageRouteBuilder {
final Widget child;
FadePageTransition({
required this.child,
}) : super(
transitionDuration: const Duration(milliseconds: 600),
pageBuilder: (context, animation, secondaryAnimation) => child,
);
@override
Widget buildTransitions(BuildContext context, Animation<double> animation, Animation<double> secondaryAnimation, Widget child) => FadeTransition(
opacity: animation,
child: child,
);
}
Run Code Online (Sandbox Code Playgroud)
我知道该secondaryAnimation属性控制旧路线如何离开的动画,不是吗?但我只是不确定在这种情况下这会如何运作。
我已将 Firebase Messaging 包含在我的应用程序中,当我尝试订阅主题时收到以下错误。
FLTFirebaseMessaging: An error occurred while calling method Messaging#subscribeToTopic, errorOrNil => {
NSLocalizedFailureReason = "Invalid registration response :'Error=INVALID_PARAMETERS'. It is missing 'token' field.";
}
flutter: subscription error: [firebase_messaging/unknown] An unknown error has occurred.
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,它只是说“发生了未知错误”,这对我来说没有多大帮助。
这是我的代码,旨在获取推送通知的权限,然后获取令牌并订阅主题列表......
Future<void> requestMessagingPermission() async {
FirebaseMessaging messaging = FirebaseMessaging.instance;
NotificationSettings settings = await messaging.requestPermission(
alert: true,
announcement: false,
badge: true,
carPlay: false,
criticalAlert: false,
provisional: false,
sound: true,
);
print('User granted permission: ${settings.authorizationStatus}');
if (settings.authorizationStatus == AuthorizationStatus.authorized) {
print('User granted notifiactions permission');
messaging.getToken().then((token) …Run Code Online (Sandbox Code Playgroud) 我正在尝试在我的 vue.js 应用程序中实现令牌刷新。到目前为止,这是有效的,因为它会根据 401 响应刷新存储中的令牌,但我需要做的就是让拦截器在之后再次重试原始请求。
主文件
axios.interceptors.response.use(
response => {
return response;
},
error => {
console.log("original request", error.config);
if (error.response.status === 401 && error.response.statusText === "Unauthorized") {
store.dispatch("authRefresh")
.then(res => {
//retry original request???
})
.catch(err => {
//take user to login page
this.router.push("/");
});
}
}
);
Run Code Online (Sandbox Code Playgroud)
商店.js
authRefresh(context) {
return new Promise((resolve, reject) => {
axios.get("auth/refresh", context.getters.getHeaders)
.then(response => {
//set new token in state and storage
context.commit("addNewToken", response.data.data);
resolve(response);
})
.catch(error => {
reject(error);
});
}); …Run Code Online (Sandbox Code Playgroud)