Flutter - возможно ли переопределение HeroController в MaterialApp? - PullRequest
0 голосов
/ 18 марта 2020

Итак, я поиграл с 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

...