Я пытаюсь повторно использовать ListTile. Если ведущий параметр не указан, я хочу пропустить рисование ведущего. Я попробовал обычную практику, заменив его пустым контейнером, но это не сработало. Контейнер должен быть определенного размера, иначе он выйдет из строя. Но даже если вы зададите контейнеру размер 1px, он создаст большое пространство слева от плитки.

enter image description here

class SimpleListTile extends StatelessWidget {
  final String title;
  final Widget leading;

  const SimpleListTile({@required this.title, this.leading});
  @override
  Widget build(BuildContext context) {
    return ListTile(
        leading: leading == null ? Container() : leading, title: Text(title));
  }
} 

Есть ли способ пропустить прорисовку ведущей, не создавая 2 плитки в операторе if, потому что я хочу сделать то же самое с конечным виджетом

0
delmin 15 Июн 2020 в 11:48

1 ответ

Лучший ответ

Кажется, что это делает либо пропуск свойства leading, либо явное предоставление null вместо пустого контейнера:

return ListTile(
  title: Text(title);
);

Или

return ListTile(
  title: Text(title);
  leading: leading // regardless of is it null or not
);
1
Andrey Ozornin 15 Июн 2020 в 14:01