Flutter: SearchBar подсказка текста с интернационализацией - PullRequest
0 голосов
/ 15 марта 2019

Я хочу разместить панель поиска в панели приложений.Поэтому я объявил Appbar, указав ему TextField в качестве заголовка, с контроллером, на котором я установил слушатель:

class _SearchView extends State<SearchView> {

      TextField appBarTitle;
      final TextEditingController _filterController = new TextEditingController();

  @override
  void initState() {
   buildAppBarTitle();
    super.initState();
  }

      TextField buildAppBarTitle() {
        return appBarTitle = new TextField(
            controller: _filterController,
            decoration: new InputDecoration(
                hintText: AppLocalization.of(context).search
            )
        );
      }


    @override
      Widget build(BuildContext context) {
        return Scaffold(
           appBar: AppBar(title: appBarTitle,),
    }
 }

Проблема: hintText: AppLocalization.of(context).search.Так как находится за пределами сборки виджета, у него нет контекста.Как я могу установить этот текст подсказки?

Ответы [ 2 ]

0 голосов
/ 16 марта 2019

В конце концов, я обнаружил, что проблема не в этом куске кода, а в том, как я объявил строку в файле локали:

  String get search => Intl.message("Search", name: search);

Я забыл поставить «поиск» в параметре name, так:

Строка get search => Intl.message («Поиск», имя: «Поиск» );

0 голосов
/ 15 марта 2019

Вы не правильно присвоили переменную appBarTitle.Попробуйте следующий код:

class _SearchView extends State<SearchView> {

final TextEditingController _filterController = new TextEditingController();

TextField buildAppBarTitle(BuildContext context) {
    return new TextField(
        controller: _filterController,
        decoration: new InputDecoration(
        hintText: AppLocalization.of(context).search
        )
    );
}

@override
Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(title: buildAppBarTitle(context),),
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...