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

Прокрутка SingleChildScrollView в Flutter

Виджет Column внутри Scaffold получает ограниченную высоту экрана. Если потомков много, колонка хочет быть выше, чем body, и снова появляется переполнение по вертикали. Обёртка SingleChildScrollView даёт одному потомку прокручиваться внутри доступной области:

import 'package:flutter/material.dart'; void main() { runApp(const MaterialApp(home: HomePage())); } class HomePage extends StatelessWidget { const HomePage({super.key}); @override Widget build(BuildContext context) { return Scaffold( body: SingleChildScrollView( child: Column( crossAxisAlignment: CrossAxisAlignment.stretch, children: List.generate( 20, (i) => Padding( padding: const EdgeInsets.all(16), child: Text('Row ${i + 1}'), ), ), ), ), ); } }

Виджет SingleChildScrollView подходит, когда потомок один и его высота может превышать экран: форма, текст статьи, длинный список из нескольких блоков. Для сотен однотипных строк позже возьмут ListView; пока достаточно прокрутки вокруг Column.

По умолчанию прокрутка вертикальная. Горизонтальную включают параметром scrollDirection: Axis.horizontal. Внутри прокрутки Column может быть выше экрана - ограничение по высоте снимается, зато пользователь листает содержимое пальцем или колёсиком:

SingleChildScrollView( padding: const EdgeInsets.all(16), child: Column( children: const [ Text('Title'), SizedBox(height: 400), Text('Form bottom'), ], ), )

Соберите Column из Text 'Start', SizedBox высотой 900 и Text 'End'. Без прокрутки на телефоне видна жёлто-чёрная полоса. Оберните колонку в SingleChildScrollView и долистайте до последней строки.

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