пример использования флаттера

Есть ли какой-нибудь пример примера функции useContext()? Я хочу использовать

AppLocalizations.of(context).someText 

во многих виджетах-перехватчиках, и я не уверен, достаточно ли этого просто обернуть в функцию useEffect при инициализации.

2 ответа

Мы можем использовать вот так.

      Widget _getAccountRegister() {
    final context = useContext();
    return Container(
      margin: const EdgeInsets.all(10),
      child: FlatButton(
        padding: const EdgeInsets.all(10),
        onPressed: () {
          NavigationUtils.push(context, routeRegister);
        },
        child: Text(Localization.of(context).signIn),
      ),
    );
  }

я использовалuseContext()в моей вспомогательной функции cubit. Он глобальный, но используется внутриbuild()методы вHookWidgets:

      void useCubitListener<BLOC extends Cubit<S>, S>(
  BLOC bloc,
  BlocListener<BLOC, S> listener, {
  bool Function(S current)? listenWhen,
}) {
 final context = useContext();
 final listenWhenConditioner = listenWhen;
 useMemoized(
() {
  final stream =
      bloc.stream.where(listenWhenConditioner ?? (state) => true).listen((state) => listener(bloc, state, context));
  return stream.cancel;
},
[bloc],
  );
} 

а потом:

      useCubitListener<BookDetailsCubit, BookDetailsPageState>(cubit, (cubit, state, context) {
  state.maybeWhen(
    saveBook: () => context.router.pop<bool>(true),
    deleteBook: () => context.router.pop<bool>(true),
    orElse: () => null,
  );
}, listenWhen: (state) => (state is BookDetailsPageSaveBook));

Подробнее о локтях и крючках здесь .

Другие вопросы по тегам