Menu
CoddyTech

用 Wrap 解决溢出

本课属于 Coddy Flutter 学习旅程的“适配不同屏幕的布局”单元。第 8 课,共 30 课。

有些行中放着应该像句子里的词语一样排列的项目:标签、筛选器和小标签。如果一行放不下,Row 就会向右溢出。

Wrap 接收相同的 children: 列表;如果下一个子项放不进当前行,就会在下一行显示:

Wrap(
  children: [
    for (final tag in tags) Text(tag),
  ],
)

这是解决溢出的第三种方法。如果某个子项需要收缩,就用 Expanded;如果页面比屏幕长,就用滚动视图;如果子项需要换到下一行,就用 Wrap。

Wrap 会让每个子项保持其所需的大小。它不会挤压子项,只会把它们移到下一行。

challenge icon

挑战

简单

这些标签在右侧溢出了。让它们根据需要换成多行,就像段落中的文字一样。

亲手试试

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)),
                ),
            ],
          ),
        ),
      ),
    );
  }
}
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

适配不同屏幕的布局中的所有课

自己练习: Flutter 在线编译器