首页 > 解决方案 > Flutter - 在 MaterialApp 中覆盖 HeroController 可能吗?

问题描述

所以我一直在玩Hero动画,想为它们使用自定义曲线。我createRectTween在实例化Hero小部件时很容易使用它来实现它。但是我想为每个单独的 Hero 小部件设置自定义曲线,而不是对其进行子类化。

所以我一直在挖掘heroes.dart并发现,它HeroController默认用于英雄转换,并且它被设置_MaterialAppState为私有变量。有什么方法可以覆盖MaterialApp小部件中的英雄控制器,还是我必须简单地将Hero小部件子类化/不使用MaterialApp

我的想法只是使用类似的东西:

final NavigatorObserver heroNavigatorObserver = HeroController(
  createRectTween: (begin, end) {
    return CustomCurveRectTween(
        a: begin, b: end, curve: Curves.bounceInOut);
  },
);

MaterialApp(
    debugShowCheckedModeBanner: false,
    theme: ThemeData(
      brightness: Brightness.dark,
      primarySwatch: Colors.blueGrey,
      backgroundColor: Colors.blueGrey,
      splashColor: Colors.blueGrey,
    ),
    navigatorObservers: [heroNavigatorObserver],
    home: SplashPage(),
  )

编辑CustomCurveRectTween是我自己的实现RectTween

标签: flutterflutter-animation

解决方案


推荐阅读