Single-child layout widgets
7173 ワード
CustomSingleChildLayout
childレイアウトの部品を指定します.
委任は、サブレイアウトの制約を決定します.そしてchildをどこに置くか、親の大きさを決めます.しかしparentはchildの大きさに依存しない.
CustomSingleChildLayoutは依頼を指定する必要があります.
主にgridの作成に使用されます.
example 1)
const CustomSingleChildLayout({
Key key,
@required this.delegate,
Widget child,
})
example 2)
Widget single(){
return CustomSingleChildLayout(delegate: delegate)
}
FittedBox Class
childまたは内部容量に応じてサイズを拡張したコンポーネントがオーバーフローを引き起こす場合、FittedBoxでラップしても総サイズを超えず、オーバーフローを防止します.
alignを使用して、必要な配列として表すことができます.
example)
使用前)
使用後)
このように、親が与えた大きさ内にchildを生成する際には、主にオーバーフローを回避するために用いられる.
FittedBoxは、親のサイズに応じて子のサイズを調整します.
BoxFit.coverを使用すると、親のサイズに応じて子のサイズを調整できます.
注)https://medium.com/flutter-community/flutter-widgets-boxes-part-2-the-whole-picture-4bb142f0b1ab
FractionallySizedBox class
FractionallySizedBox classは、目上の親のサイズの割合で作られています.
すなわち、設計された寸法が相対的でなければならない場合、親の寸法に基づいて寸法をスケールで表す.
example)
FractionallySizedBox classは、目上の親のサイズの割合で作られています.
すなわち、設計された寸法が相対的でなければならない場合、親の寸法に基づいて寸法をスケールで表す.
example)
IntrinsicHeight class
名前を見るとIntrisicってどういう意味ですか?このような問題が発生した.
調べてみると、intrinsicは固有の、本質的な意味です.
InterinsicHeightは、その名の通りchildの固有高さに応じてchildの大きさを調整する部品です.
このコンポーネントは、高さが制限されず、無限に拡張しようとするchildが必要な場合に便利です.
コンポーネントがchildに渡されるコンストレイントは、親コンストレイントに従います.コンストレイントがchildの最大固有高さを含むのに十分でない場合は、低い高さを有します.逆に、最小高さコンストレイントがchildの最大固有高さより大きい場合、指定した高さは比較的高いです.
高い高さになります.
なるべく使わないことをお勧めします.
<使用前>
<使用後>
IntrinsicWidth class
その前にInterinsicHeight Classについてお話ししました.
heightがあればwidthも存在します.
これはInterinsicHeight Classの内容とあまり差がありません.
上記の説明では、heightをwidthに変更して理解すればよい.
このコンポーネントは、無限に拡張され、幅が制限されないchildを試す必要がある場合に便利です.
コンポーネントがchildに渡されるコンストレイントは、親コンストレイントに従います.コンストレイントがchildの最大固有高さを含むのに十分でない場合は、低い高さを有します.逆に、最小高さコンストレイントがchildの最大固有高さより大きい場合、指定した高さは比較的高いです.
幅が低くなります.
幅が高くなります.
このクラスもできるだけ無効にすることをお勧めします.
<使用後>
(写真の出所:https://bsscco.github.io/posts/flutter-layout-widgets/)
LimitedBox class
この部品はchild制限なしで箱を制限するために使用されます.
ほとんどの場合、サイズは上の要素で定義した制限に依存します.ただし、ListView、Column、Rowでは、サブエレメントのサイズは制限されません.
親要素の制限が存在しない場合、親要素の制限に依存するコンポーネントにデフォルト値を設定するにはどうすればいいですか?
この場合LimitedBoxを使えばいい!
LimitedBoxはmaxHeightとmaxWidthを提供しています.これはchildに無限の状況で自然の大きさを提供した.
別々に整理すると、
部品の最大幅に制限がない場合、その部品のchildの幅はmaxWidthに従って制限されます.
同様の論理では、コンポーネントの最大高さを制限しない場合、コンポーネントのchild高さもmaxHeightに制限される.
Offstage class
offstage classはその名の通りstageから脱退すると理解しています.
offstage classはnavigatorに似ているように見え、ページが変わります.
ただし、新しいページを作成する必要はありません.
もう一つの特徴は見えないことですが、offstage状態でもずっと動いているので、見えなくてもバッテリーが必要です.
ここで、offstageをより詳細に理解するために、サンプルコードをインポートします.
コード全体を下のリンクに置いて、完全なコードを知りたい場合は、に入ってください.
offstage classはその名の通りstageから脱退すると理解しています.
offstage classはnavigatorに似ているように見え、ページが変わります.
ただし、新しいページを作成する必要はありません.
もう一つの特徴は見えないことですが、offstage状態でもずっと動いているので、見えなくてもバッテリーが必要です.
ここで、offstageをより詳細に理解するために、サンプルコードをインポートします.
コード全体を下のリンクに置いて、完全なコードを知りたい場合は、に入ってください.
bool _offstage = true;
逆にoffstageがfalseの場合、物理空間が表示されます.
@override
Widget build(BuildContext context) {
return Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Offstage(
offstage: _offstage,
child: FlutterLogo(
key: _key,
size: 150.0,
),
),
Text('Flutter logo is offstage: $_offstage'),
ElevatedButton(
child: const Text('Toggle Offstage Value'),
onPressed: () {
setState(() {
_offstage = !_offstage;//false로 초기 설정한 값이 버튼을 누를 때마다 값이 바뀐다.
});
},
),
],
);
}
<初期画面><ボタンを押して表示>
完全なコード
https://dartpad.dev/?id=2bad6eb52a25efd3df702370db842253
OverflowBox class
この部品は、親部品からchildに異なる制約を適用し、childが親部品(オーバーフロー、すなわちより大きい)をオーバーフローさせることができる.
overflowBoxを使用しないと、親の制限から抜け出すことはできません.
ただし、overflowBoxを使用して親コンストレイントから離れるコンストレイントを設定したり、このように設定したコンストレイントで親コンストレイントから離れるBoxを作成したりすることができます.
example)
out put)
SizedOverflowBox class
overflowBoxと似たような役割を果たしています.
overflowBoxとは異なり、コンストレイントを個別に設定するのではなく、以前に設定した親コンストレイントを渡します.SizedOverflowBoxを使用すると、親コンストレイントを超えたボックスを描画できます.
example)
out put)
Transform class
Transformclassは今まで見た中で最も面白く、最も不思議な部品です.
Powerpoint、ビデオ、アプリケーションを使用するときによく見られる機能は、変換コンポーネントを使用しています.
下に添付されているビデオを見ると、思わず「わあ」と言います.
Transformには本当に多くの機能がありますが、その中の3つの機能を紹介したいと思います.
1. Transform.rotate
overflowBoxと似たような役割を果たしています.
overflowBoxとは異なり、コンストレイントを個別に設定するのではなく、以前に設定した親コンストレイントを渡します.SizedOverflowBoxを使用すると、親コンストレイントを超えたボックスを描画できます.
example)
out put)
Transform class
Transformclassは今まで見た中で最も面白く、最も不思議な部品です.
Powerpoint、ビデオ、アプリケーションを使用するときによく見られる機能は、変換コンポーネントを使用しています.
下に添付されているビデオを見ると、思わず「わあ」と言います.
Transformには本当に多くの機能がありますが、その中の3つの機能を紹介したいと思います.
1. Transform.rotate
参照ビデオ)https://youtu.be/9z_YNlRlWfA
Reference
この問題について(Single-child layout widgets), 我々は、より多くの情報をここで見つけました https://velog.io/@kimhr9889/Single-child-layout-widgetsテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol