#flutter #dart #flutter-web
Вопрос:
Я объявил Scaffold
панель приложений как переменную вне области видимости.
PreferredSizeWidget originAppBar = AppBar(
centerTitle: true,
backgroundColor: Colors.white,
title: ....
Это позволяет мне использовать его, назначив originAppBar
appBar:
кому .
appBar: originAppBar,
Тем не менее, я включил следующий код в originAppBar
.
Navigator.of(context).pushNamed(Profile.route);
Это функция, которая требует a BuildContext
и не входит в originAppBar
.
Возможно ли иметь предпочтительный вариант с аргументом? Вот так С#;
//C#
PreferredSizeWidget originAppBar = new PreferredSizeWidget(BuildContext context)
Widget build(BuildContext xontext){
....
appBar: originAppBar(context)
....
}
Спасибо.
Ответ №1:
Используйте GlobalKey — назначьте его своему виджету
Global keys uniquely identify elements. Global keys provide access to other objects that are associated with those elements, such as BuildContext.
https://api.flutter.dev/flutter/widgets/GlobalKey-class.html
Комментарии:
1. Спасибо вам за ваш ответ. Неужели его нельзя использовать
GlobalKey
только дляappBar
? В большинстве примеров в сетиGlobalKey
объявлен в классе, поэтому я думаю, что его нельзя использовать сPreferredSizeWidget
. Я слишком новичок, чтобы учиться здесь, может кто-нибудь, пожалуйста, сказать мне?
Ответ №2:
Похоже, что определение было неправильным. Следующее верно.
PreferredSizeWidget originAppBar(BuildContext context) {
return AppBar(....
}
....
Widget build(BuildContext context) {
return Scaffold(
appBar: originAppBar(context),