Исправление переполнения: перенос
Часть раздела Адаптивная компоновка путешествия по Flutter на Coddy. Урок 8 из 30.
Некоторые строки содержат элементы, которые должны располагаться так же, как слова в предложении: теги, фильтры, метки. Если их слишком много для одной строки, содержимое Row выходит за правый край.
Wrap принимает тот же список children: и, если следующий дочерний элемент не помещается в строке, начинает новую строку под ней:
Wrap(
children: [
for (final tag in tags) Text(tag),
],
)Это третье решение проблемы переполнения. Используй Expanded, когда один дочерний элемент должен сжиматься, прокручиваемую область — когда страница длиннее экрана, а Wrap — когда дочерние элементы должны переходить на следующую строку.
Wrap сохраняет для каждого дочернего элемента запрошенный им размер. Он никогда не сжимает их, а только переносит на следующую строку.
Задание
ЛегкоТеги выходят за правый край. Размести их на таком количестве строк, сколько потребуется, как слова в абзаце.
Попробуйте сами
import 'package:flutter/material.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
final tags = ['Dart', 'Flutter', 'Mobile', 'Design', 'Games', 'Web'];
return MaterialApp(
debugShowCheckedModeBanner: false,
home: Scaffold(
appBar: AppBar(title: const Text('Interests')),
body: Padding(
padding: const EdgeInsets.all(16),
child: Row(
children: [
for (final tag in tags)
Container(
width: 110,
height: 40,
decoration: BoxDecoration(
color: Colors.purple.shade100,
borderRadius: BorderRadius.circular(20),
),
child: Center(child: Text(tag)),
),
],
),
),
),
);
}
}
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Адаптивная компоновка
1Совместное размещение в строке
Expanded заполняет строкуДелим пространство с flexFlexible подстраивается под размер дочернего элементаSpacer раздвигает элементы2Ошибка переполнения
Ошибка переполненияИсправление переполнения: расширениеИсправление переполнения: прокруткаИсправление переполнения: переносИнтервалы внутри переноса5Перечисления и switch
Перечисления для типов экрановКонструкция switch с перечислениемВыражения switchПотренируйтесь самостоятельно: Онлайн-компилятор Flutter