Есть ли у GlobalKey аналог HookWidget?
Я хочу позвонить
onPopPage
в следующем коде в родительском виджете. Традиционно я могу использовать
GlobalKey<SomeState>().currentState.someMethod
.
Но что лучше всего с HookWidget?
class SomeWidget extends HookWidget {
final innerNavigatorKey = GlobalKey<NavigatorState>();
@override
Widget build(BuildContext context) {
final isPasswordReset = useState(false);
final onPopPage = useMemoized(() => (_, __) {
if (isInInnerRoute.value &&
innerNavigatorKey.currentState?.onWillPop() == true) {
return true;
}
return false;
});
return Navigator(
pages: [
NoTransitionPage(child: _buildLogin(() {
isInInnerRoute.value = true;
})),
if (isInInnerRoute.value)
NoTransitionPage(
child: SomePage(navigatorKey: innerNavigatorKey)),
],
onPopPage: onPopPage,
);
}
}
class NoTransitionPage extends Page {
final Widget child;
NoTransitionPage({Key key, this.child}) : super(key: key);
Route createRoute(BuildContext context) {
return PageRouteBuilder(
maintainState: false,
settings: this,
pageBuilder: (_, __, ___) => child,
);
}
}
1 ответ
Я спросил автора библиотеки и получил ответ. Суть в том, что следует избегать использования ключей.