小编dan*_*471的帖子

如何使用 Flutter 中的页面路由生成器执行简单的“淡出然后淡入”

我正在尝试使用 实现从一条导航路线到另一条导航路线的漂亮简单的淡入淡出动画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属性控制旧路线如何离开的动画,不是吗?但我只是不确定在这种情况下这会如何运作。

flutter flutter-animation

5
推荐指数
1
解决办法
1837
查看次数

Firebase Cloud Messaging (Flutter):订阅主题时出现错误消息

我已将 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)

push-notification firebase flutter firebase-cloud-messaging

5
推荐指数
1
解决办法
2532
查看次数

如何让 axios 拦截器重试原始请求?

我正在尝试在我的 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)

jwt vue.js axios vuex

3
推荐指数
1
解决办法
5395
查看次数