Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
⊗flPmLsLC 49 of 125 menu
◀ ▶

ListView внутри Column в Flutter

Иногда над списком нужен заголовок или панель, а сами строки должны прокручиваться. Тогда ListView кладут внутрь Column вместе с другими виджетами. Без ограничения по высоте ListView пытается стать бесконечно высоким, и Flutter сообщает об ошибке вёрстки.

Виджет Expanded заставляет потомка занять оставшуюся долю высоты в Column. Обёрнутый в Expanded ListView получает конечную высоту и нормально прокручивается под заголовком:

import 'package:flutter/material.dart'; void main() { runApp(const MaterialApp(home: HomePage())); } class HomePage extends StatelessWidget { const HomePage({super.key}); static const items = ['One', 'Two', 'Three', 'Four', 'Five']; @override Widget build(BuildContext context) { return Scaffold( body: Column( crossAxisAlignment: CrossAxisAlignment.stretch, children: [ const Padding( padding: EdgeInsets.all(16), child: Text( 'Task list', style: TextStyle(fontSize: 20), ), ), Expanded( child: ListView( children: [ for (final label in items) ListTile(title: Text(label)), ], ), ), ], ), ); } }

Сделайте экран: сверху Text 'News' с отступом 16, ниже ListView из шестнадцати ListTile. Заголовки возьмите циклом: 'Story 1' … 'Story 16'. Список оберните в Expanded: заголовок стоит на месте, строки листаются.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить