Использование значения DropDownButton

#sqlite #flutter #dropdownbutton

#sqlite #трепетание #dropdownbutton

Вопрос:

Я создал красивую DropDownButton в своем приложении flutter, но мне было трудно выяснить, как на самом деле ее использовать.

Как я могу извлечь выбранное значение?

Я хочу использовать его для обновления настроек моей панели поиска. Когда пользователь выбирает ‘1’, строка поиска должна выполнять поиск по определенному столбцу в моей базе данных Sqlite, когда они выбирают ‘2’, он должен выполнять поиск по другим столбцам. После извлечения значения лучше всего сделать мой оператор if / else над строкой поиска или в той части моего кода, которая сообщает, как выполнить поиск в базе данных?

Ответ №1:

Попробуйте это:

search_page.dart

 class SearchingPage extends StatelessWidget {
  
  @override
  Widget build(BuildContext context) {
    return MyBeautifulDropdownPage(
      myIfElseFunction: (value) {
        print('selected value is $value');
        if(value =='1'){
          _searchASpecificColumnInMySqliteDb();
        }else if (value == '2'){
          _searchTheOtherColumnInMySqliteDb();
        }
      },,
    );
  }
}
  

my_beautiful_dropdown.dart

 class MyBeautifulDropdownPage extends StatelessWidget {
  final Function(String) myIfElseFunction;

  const MyBeautifulDropdownPage({Key key, this.myIfElseFunction}) : super(key: key); 
  @override
  Widget build(BuildContext context) {
    return new DropdownButton<String>(
      items: <String>['1', '2'].map((String value) {
        return new DropdownMenuItem<String>(
          value: value,
          child: new Text(value),
        );
      }).toList(),
      onChanged: myIfElseFunction
    ),
  }
}
  

В выпадающем списке вы можете получить значение выбранного столбца с onChanged свойством. Туда вы можете поместить свой оператор if

Комментарии:

1. Я написал выпадающее меню на отдельной странице и вставил его в качестве виджета. Есть ли способ записать что-нибудь в OnChanged, чтобы на моей странице поиска я мог использовать значение и написать там свое if / else?

2. @BillWatts уверен, что это возможно. проверьте мой отредактированный ответ