добавьте в виджет временной шкалы кнопку фильтра во флаттере

#flutter #dart

Вопрос:

У меня есть контейнер на странице программы. В этом контейнере я отображаю историю событий в виджете временной шкалы. Все отображается по мере необходимости. Но я хочу добавить кнопку фильтра. Когда я нажимаю эту кнопку, я хочу, чтобы фильтр работал и выбирал нужные события. Но я не понимаю, как правильно добавить кнопку в контейнер. Мой скрин (виджет временной шкалы) :

введите описание изображения здесь

Кодовый контейнер :

 Expanded(  child: Padding(  padding: EdgeInsets.fromLTRB(7, 0, 7, 7),  child: Container(  alignment: Alignment.center,  decoration: BoxDecoration(  border: Border.all(width: 1.5),  borderRadius: BorderRadius.circular(25)),  child: Column(  mainAxisSize: MainAxisSize.min,  children: [  Container(  height: 45,  child: Text("история событий", style: TextStyle(  fontSize: 25.0, color: Colors.blueGrey)),  padding: EdgeInsets.all(2.0)),  Expanded(  child: Scrollbar(  child: new ListView(  shrinkWrap: true,  children: [   new Container(  alignment: Alignment.bottomLeft,  child: FixedTimeline.tileBuilder(   theme: TimelineThemeData(  nodePosition: 0.23,  color: Colors.blueGrey,  indicatorTheme: IndicatorThemeData(  position: 2,  size: 20.0,  ),  connectorTheme: ConnectorThemeData(  thickness: 2.5,  ),  ),  builder: TimelineTileBuilder  .connectedFromStyle(  contentsAlign: ContentsAlign  .basic,  oppositeContentsBuilder: (  context, index) =gt;  Padding(  padding: const EdgeInsets  .all(8.0),  child: Text(  _userDetails[index]  .date),  ),  contentsBuilder: (context,  index) =gt;  Card(  child: Padding(  padding: const EdgeInsets  .all(8.0),  child: Text(  _userDetails[index]  .event),  ),  ),  connectorStyleBuilder: (context,  index) =gt;  ConnectorStyle.solidLine,  indicatorStyleBuilder: (context,  index) =gt;  IndicatorStyle.dot,  itemCount: _userDetails.length,  ),  )  ),   ],  ))),  ],  )))) 

здесь я хочу добавить кнопку фильтра (синяя рамка): введите описание изображения здесь

Новый скрин: введите описание изображения здесь

Ответ №1:

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

 Column(  mainAxisSize: MainAxisSize.min,  children: [  Container(  height: 45,  child: Text("история событий", style:   TextStyle(  fontSize: 25.0, color:   Colors.blueGrey)),  padding: EdgeInsets.all(2.0)),  Expanded( /// lt;-- add from  child: Row(  mainAxisAlignment:   MainAxisAlignment.spaceBetween,  children:[  SizedBox(),  Container(  width: 30,   height: 30,   decoration: BoxDecoration(  border: Border.all(  color: Colors.blue)),])), lt;--to  Expanded....    

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

1. спасибо, но в строке «Выравнивание: Выравнивание.Пробел» возникла проблема (параметр «Пробел» не определен для типа «Выравнивание»). (Документация) Попробуйте импортировать библиотеку, которая определяет «Промежуток между», исправив имя на имя существующего средства получения или определив средство получения или поле с именем «Промежуток между».)

2. mainAxisAlignment: MainAxisAlignment.spaceBetween , я написал от руки в этот редактор, здесь нет ошибок компиляции)

3. могу ли я поднять эту кнопку еще выше? потому что она слишком низкая и вся история событий пала

4. Я добавил обновленный экран к своему вопросу

5. вы можете заменить Expanded мой пример кода на Container с width: double.infinity и height: 35 , например, или использовать Flexible с flex параметром для всех ваших виджетов в первом Column