【 Flutter 】Flutter を 基礎 から 学習 ( ウィジェット編 ) part33 Single-child layout widgets
「基礎 から 学ぶ Flutter 」という書籍で 学習 したことを ブログでアウトプットしていこうと思います。今回は ウィジェット編 ( part33 )です。
前回
【 Flutter 】Flutter を 基礎 から 学習 ( ウィジェット編 ) part32 Single-child layout widgets
引き続き、Single-child layout widgetsについて学びます。
Single-child layout widgets
ConstrainedBoxウィジェット, BoxConstraintsクラス
ConstrainedBox
ウィジェットはchild
プロパティで指定したウィジェットに対して制約を付与できるウィジェットです。
以前にも似た要はウィジェットがありましたよね。
FractionallySizedBox
ウィジェットwidthFactor
とheightFactor
プロパティです。
このウィジェットも「親の言うことを聞きなさい!」という類の部品となります。それだけ言うことを聞かないウィジェットが多いということなのでしょうか(笑
制約は前回同様、BoxConstraints
という専用のクラスがあります。
指定方法として、BoxConstraints
クラスの名前付きコンストラクタを使います。
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
void main() {
runApp(new MaterialApp(home: new MyApp()));
}
var ok = false;
class MyApp extends StatefulWidget {
@override
State<StatefulWidget> createState() {
return _State();
}
}
class _State extends State<MyApp> {
@override
Widget build(BuildContext context) {
var size = MediaQuery.of(context).size;
var w = size.width;
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('テスト中です。'),
),
body: Column(
children: <Widget>[
ConstrainedBox(
// 自由に制約を付けたい場合。
constraints: const BoxConstraints(maxHeight: 100),
child: SizedBox(
width: 300,
height: 300, // 100に制限されます。
child: DecoratedBox(
decoration: BoxDecoration(
color: Colors.greenAccent,
),
),
),
),
ConstrainedBox(
// 最大値で制約した場合。
constraints: BoxConstraints.loose(Size(50.0, 50.0)),
child: SizedBox(
width: 300, // こちらは50に制限されます。
height: 20, // この値が使用されています。
child: DecoratedBox(
decoration: BoxDecoration(
color: Colors.red,
),
),
),
),
ConstrainedBox(
// 固定値で制約した場合。
constraints: BoxConstraints.tight(Size(50.0, 50.0)),
child: SizedBox(
width: 300, // 50に制限されます。
height: 20, // 強制的に50に「拡大」されます。
child: DecoratedBox(
decoration: BoxDecoration(
color: Colors.blue,
),
),
),
),
],
)));
}
}
実行してみました。
最後に
親が制限かけることが多いのでしょうかね?
今日はここまで!
参考
【Flutter入門】Widgetのサイズを調整できるConstrainedBoxについて解説するよ | TECHRISE (tech-rise.net)
ディスカッション
コメント一覧
まだ、コメントがありません