オーバーフローの解決:折り返し
CoddyのFlutterジャーニー「画面サイズに合わせたレイアウト」セクションの一部。レッスン 8/30。
タグ、フィルター、チップのように、文中の単語のように並ぶ項目を含む行もあります。1行に収まりきらないほど項目が多いと、Row は右側にはみ出します。
Wrap は同じ children: リストを受け取り、次の子が行に収まらない場合は、その下の新しい行から表示します。
Wrap(
children: [
for (final tag in tags) Text(tag),
],
)これは、はみ出しを解消する3つ目の方法です。1つの子を縮小する必要がある場合は 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)),
),
],
),
),
),
);
}
}
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
画面サイズに合わせたレイアウトのすべてのレッスン
自分で練習してみよう: Flutterオンラインコンパイラ