Перезагрузить данные в statefullwidget при изменении в панели приложения - PullRequest
0 голосов
/ 01 октября 2019

В моей панели приложений у меня есть текстовое поле для поиска данных в моем statefullwidget. Но как мне перезагрузить мой statefullwidget, когда пользователь искал данные?

class HorseFilterPage extends StatelessWidget {
  final _controller = TextEditingController();

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(
          brightness: Brightness.light,
          backgroundColor: new Color(0xfafafa),
          iconTheme: IconThemeData(
            color: Colors.black, //change your color here
          ),
          elevation: 0.0,
          title: new TextField(
            style: new TextStyle(color: Colors.black87),
            controller: _controller,
            onChanged: (text) {
              _sendDataToSecondScreen(context, text);
            },
            decoration: new InputDecoration(
              prefixIcon: new Icon(Icons.search, color: Colors.black87),
              hintText: 'Search...',
              hintStyle: TextStyle(color: Colors.black87),
              focusedBorder: UnderlineInputBorder(
                  borderSide: BorderSide(color: Colors.black87)),
            ),
          ),
          actions: <Widget>[
            IconButton(
              icon: Icon(
                Icons.close,
                color: Colors.black87, // Here
              ),
              onPressed: () {
                _controller.clear();
              },
            ),
          ],
        ),
        /*
      body: Container(child: HorseFilterForm()),
      */
        body: BlocProvider(
            builder: (context) {
              return HorseOverviewBloc(httpClient: http.Client())
                ..dispatch(
                  Fetch(),
                );
            },
            child: HorseFilterForm(_controller.text)));
  }

  void _sendDataToSecondScreen(BuildContext context, String text) {
     print('Text ===>' + text);
  }
}

У меня есть небольшая часть кода, мой StatefullWidget:

class HorseFilterForm extends StatefulWidget {

   final String searchValue;
   HorseFilterForm(this.searchValue);

  @override
  State<HorseFilterForm> createState() => _HorseFilterFormState(searchValue);


}

class _HorseFilterFormState extends State<HorseFilterForm> {
   String value;

  _HorseFilterFormState(searchValue) {
    this.value = searchValue;
  }

  final _scrollController = ScrollController();
  final _scrollThreshold = 100.0;
  HorseOverviewBloc _homeBloc;

<the rest of my code>

}

Как я могу отправить данные надругой виджет? В моем horseFilterForm я использую Bloc для обработки состояний. Одно из событий для получения данных:

_homeBloc.dispatch(Search(
        queryParameters: getQueryParameters(_archivedFilter, _ageFilter)));

Где _archivedFilter & _ageFiltere - мои параметры.

...