diff --git a/src/ui/layout/index.md b/src/ui/layout/index.md index e42d6d3bdfd..1e05ef8982b 100644 --- a/src/ui/layout/index.md +++ b/src/ui/layout/index.md @@ -15,63 +15,93 @@ diff2html: true {{site.alert.secondary}} -

What's the point?

- - * Widgets are classes used to build UIs. - * Widgets are used for both layout and UI elements. - * Compose simple widgets to build complex widgets. + +

ポイント

+ +* ウィジェットはUIを構築するために使用されるクラスです。 +* ウィジェットはレイアウトとUI要素の両方に使用されます。 +* シンプルなウィジェットを組み合わせて、複雑なウィジェットを構築することができます。 {{site.alert.end}} - + +Flutterのレイアウトの仕組みはウィジェットが中心になっています。Flutterでは、ほぼ全てがウィジェットです — レイアウトもウィジェットで実現します。Flutterアプリで直接見える画像、アイコン、テキストはすべてウィジェットです。しかし、直接見えない要素もウィジェットとして表現されます。例えば、行や列、グリッドなど、表示されるウィジェットを配置したり、並び方の条件をつけたり、整列するための要素もウィジェットです。 + +ウィジェットを組み合わせてより複雑なウィジェットを構築することもできます。 + +例えば、以下の最初のスクリーンショットでは、それぞれの下にラベルが付いている3つのアイコンが表示されています。 + + +2番目のスクリーンショットはレイアウトを視覚的に表示しています。それぞれの列にアイコンとラベルから成る3列の行から構成されていることが分かります。
- Sample layout - Sample layout with visual debugging + Sample layout + Sample layout with visual debugging
-The second screenshot displays the visual layout, showing a row of -3 columns where each column contains an icon and a label. - {{site.alert.note}} - Most of the screenshots in this tutorial are displayed with + +このチュートリアルのほとんどのスクリーンショットは、debugPaintSizeEnabledがtrueに設定されている状態で表示されています。これにより視覚的にレイアウトが見えるようになっています。詳細は、[Using the Flutter inspector][]の[Debugging layout issues visually][]を参照してください。 {{site.alert.end}} + +以下は、このUIに対するウィジェットツリーの図です: Node tree {:.text-center} + +ほとんどは想定通りに見えると思いますが、ピンク色で表示されているContainerについては疑問に思うかもしれません。[Container]は子ウィジェットをカスタマイズできるウィジェットクラスです。パディング、マージン、ボーダー、背景色を追加したいときなど、その機能の一部を名前付けするためにContainerを使用します。 + +この例では、各 [Text]ウィジェットはマージンを追加するために Container内に配置されています。全体の [Row]も同様に、行の周囲にパディングを追加するためにContainer内に配置されています。 + +この例のUIの残りの部分はプロパティによって制御されています。[Icon][]の色はその`color`プロパティを使用して設定します。フォント、その色、重さなどを設定するために`Text.style`プロパティを使用します。 + +## ウィジェットのレイアウト +Flutterでは、ウィジェットをどのようにレイアウトするのでしょうか?このセクションでは、シンプルなウィジェットの作成と表示方法を説明します。また、シンプルなHello Worldアプリケーションのコードも示します。 + +Flutterでは、少しのステップだけでテキスト、アイコン、画像のレイアウトができます。 + +### 1. レイアウトウィジェットの選択 +表示するウィジェットの整列、制約の種類によって、さまざまな[layout widgets][]から選択します。レイアウトウィジェットの特性は、子ウィジェットに適用されます。 +この例では、子ウィジェットを水平、垂直方向に中央に配置する[`Center`][]ウィジェットを使っています。 + + +### 2. 表示するウィジェットの作成 +例として、[`Text`][]ウィジェットを作成します: ```dart Text('Hello World'), ``` + +[`Image`][]ウィジェットを作成します: ```dart @@ -110,7 +158,10 @@ Image.asset( ), ``` + +[`Icon`][] ウィジェットを作成します: ```dart @@ -120,18 +171,33 @@ Icon( ), ``` + +### 3. 表示するウィジェットをレイアウトウィジェットに追加します + +すべてのレイアウトウィジェットは、次のような特徴を持っています: + +* `child` プロパティ:一つの子要素を持つ場合—例) + `Center`、`Container`ウィジェット +* `children` プロパティ: リストとして複数の子要素を保つ場合—例) + `Row`, `Column`, `ListView`, `Stack`ウィジェット + +`Text`ウィジェットを`Center`ウィジェットに追加します: ```dart @@ -140,12 +206,18 @@ const Center( ), ``` + +### 4. ページにレイアウトウィジェットを追加する + +Flutterのアプリ自体がウィジェットであり、ほとんどのウィジェットには[`build()`][]メソッドがあります。アプリの`build()`メソッドでウィジェットを生成して返すと、そのウィジェットが表示されます。 + +#### Material apps + +`Material`appsの場合、[`Scaffold`][]ウィジェットを使用することができます。デフォルトのバナー、背景色を提供し、ドロワー、スナックバー、ボトムシートを追加するためのAPIがあります。そして、ホームページの`body`プロパティに直接`Center`ウィジェットを追加することができます。 @@ -177,6 +253,7 @@ class MyApp extends StatelessWidget { } ``` + +{{site.alert.note}} +[Material library][]は、[Material Design][]の原則に従ったウィジェットを実装しています。UIをデザインする際には、標準の[widget library][]からのウィジェットだけを使用することも、Materialライブラリからのウィジェットを使用することもできます。両方のライブラリからウィジェットを混ぜて使用したり、既存のウィジェットをカスタマイズすることや、自分自身のカスタムウィジェットを作成することもできます。 +{{site.alert.end}} + +#### 非Material apps + +非Material appsの場合、`Center`ウィジェットをアプリの`build()`メソッドに追加できます: @@ -216,16 +302,22 @@ class MyApp extends StatelessWidget { } ``` + +非Material appsにはデフォルトでは`AppBar`、タイトル、背景色が含まれません。非Material appsでこれらの機能を使用したい場合は、自分で作成する必要があります。このアプリでは、背景色を白に、テキストをダークグレーに変更して、Materialアプリを模倣しています。
- That's it! When you run the app, you should see _Hello World_. - - App source code: + + 以上です!アプリを実行すると、_Hello World_が表示されるはずです。 + + ソースコード: - [Material app]({{examples}}/layout/base) - [Non-Material app]({{examples}}/layout/non_material)
@@ -237,6 +329,7 @@ color to white and the text to dark grey to mimic a Material app.
+ +## 複数のウィジェットを垂直、水平に配置する + + +最も一般的なレイアウトのパターンの一つは、ウィジェットを垂直または水平に配置することです。ウィジェットを水平に配置するには`Row`ウィジェットを、垂直に配置するには`Column`ウィジェットを使用します。 + + +{{site.alert.secondary}} +

ポイント

+ + * `Row`と`Column`は最も一般的に使用されるレイアウトパターンの2つです。 + * `Row`と`Column`はそれぞれ子ウィジェットのリストを取ります。 + * 子ウィジェット自体に`Row`、`Column`や、他の複雑なウィジェットを指定することができます。 + * `Row`または`Column`で、子ウィジェットを垂直および水平にどのように配置するかを指定できます。 + * 特定の子ウィジェットを伸ばしたり、制約を設けたりすることができます。 + * 子ウィジェットが`Row`または`Column`のスペースをどのように使用するかを指定できます。 +{{site.alert.end}} + +Flutterで行(row)や列(column)を作成するためには、子ウィジェットのリストを[`Row`][]や[`Column`][]ウィジェットに追加します。そして、それぞれの子ウィジェットもまた行や列にできます。以下の例は、行や列の中にネストする方法を示しています。 + +このレイアウトは`Row`として構成されています。Rowには2つの子要素があり、左側が列Column、右側が画像です: Screenshot with callouts showing the row containing two children + +左側の列のウィジェットツリーでは、行(Row)と列(Column)がネストされています。 Diagram showing a left column broken down to its sub-rows and sub-columns + +[行(Row)と列(Column)のネスト](#nesting-rows-and-columns)で、Pavlova(ババロアショップアプリ)のレイアウトコードの一部を実装します。 {{site.alert.note}} - `Row` and `Column` are basic primitive widgets for horizontal - and vertical layouts—these low-level widgets allow for maximum - customization. Flutter also offers specialized, higher level widgets - that might be sufficient for your needs. For example, - instead of `Row` you might prefer [`ListTile`][], - an easy-to-use widget with properties for leading and trailing icons, - and up to 3 lines of text. Instead of Column, you might prefer - [`ListView`][], a column-like layout that automatically scrolls - if its content is too long to fit the available space. - For more information, see [Common layout widgets][]. -{{site.alert.end}} - + +`Row`と`Column`は、水平と垂直のレイアウトのための基本的なウィジェットであり、最大限のカスタマイズが可能です。Flutterには、用途に特化したウィジェットも提供しており、これらが要件を満たすために十分な場合もあります。例えば、`Row`の代わりに[`ListTile`][]の方が適切かもしれません。`ListTile`は、先頭、末尾のアイコンと最大3行のテキストを持つ使いやすいウィジェットです。`Column`の代わりに[`ListView`][]が適しているかもしれません。`ListView`は、コンテンツがスペースに収まらない場合に自動的にスクロールする、Columnに似たレイアウトを実現します。詳細は、[Common layout widgets][]を参照して下さい。{{site.alert.end}} + + +### ウィジェットの整列 + +`mainAxisAlignment`と`crossAxisAlignment`のプロパティを使用して、行(Row)や列(Column)が、子ウィジェットをどのように整列させるかを制御できます。行(Row)の場合、主軸(main axis)は水平方向に、交差軸(cross axis)は垂直方向になります。列(Column)の場合、主軸(main axis)は垂直方向に、交差軸(cross axis)は水平方向に走ります。
Diagram showing the main axis and cross axis for a column
+ +[`MainAxisAlignment`][]と[`CrossAxisAlignment`][]の列挙型(Enum)で、アラインメント(整列方法)を制御するためのさまざまな定数が定義されています。 {{site.alert.note}} + +プロジェクトに画像を追加する場合、画像にアクセスするには`pubspec.yaml`ファイルを更新すうr必要があります。この例では`Image.asset`を使って画像を表示しています。詳細は[`pubspec.yaml` file][]または[Adding assets and images][]を参照してください。`Image.network`を使用してWeb上の画像を参照している場合は、この操作は必要ありません。 {{site.alert.end}} + +次の例では、3つの画像それぞれに100ピクセルの幅があります。レンダリング領域(この場合は全画面)は300ピクセル以上の幅があるため、主軸(main axis)の配置を`spaceEvenly`に設定すると、各画像の前後のスペースを水平方向にを均等に分割します。
@@ -348,11 +486,14 @@ space evenly between, before, and after each image.
+ +列(Column)は行(Row)と同じように動作します。以下の例では、それぞれが100ピクセルの高さを持つ3つの画像の列を示しています。領域の高さ(この場合は全画面)は300ピクセル以上なので、主軸(main axis)の配置(alignment)を`spaceEvenly`に設定すると、各画像の上下のスペースを垂直方向に均等に分割します。
@@ -376,19 +517,27 @@ space evenly between, above, and below each image.
+ +### ウィジェットのサイズ設定 +レイアウトがデバイスに収まり切らない場合、はみ出しが発生する箇所に黄色と黒の縞模様が表示されます。 +以下に、横幅が広すぎる行の[例][sizing]を示します: Overly-wide row {:.text-center} + +[`Expanded`][] ウィジェットを使用すると、ウィジェットを行または列に合わせてサイズ調整することができます。前の例の、画像の行がレンダリング領域に対して広すぎる問題を解決するためには、各画像を `Expanded` ウィジェットでラップします。
@@ -418,11 +567,14 @@ wrap each image with an `Expanded` widget.
+ +あるウィジェットが他の兄弟ウィジェットの2倍のスペースを占めるようにしたいと思うかもしれません。そのためには、ウィジェットのフレックス係数を決定する整数である`Expanded`ウィジェットの`flex`プロパティを使用します。デフォルトのフレックス係数は1です。以下のコードでは、中央の画像のフレックス係数に2を設定しています:
@@ -455,12 +607,15 @@ the flex factor of the middle image to 2: [sizing]: {{examples}}/layout/sizing -### Packing widgets +### ウィジェットをまとめる + +デフォルトでは、行(Row)または列(Column)はその主軸(main axis)に沿って可能な限り多くのスペースを占めるように配置しますが、子要素間のスペースができる限り少なくなるようにまとめたい場合は、`mainAxisSize`を`MainAxisSize.min`に設定します。以下の例では、このプロパティを使用して星のアイコンをまとめています。
@@ -486,28 +641,43 @@ uses this property to pack the star icons together.
+ +### 行と列のネスト + +行(Row)と列(Column)を必要なだけ他の行(Row)や列(Column)の中に深くネストすることができます。以下のレイアウトの枠線で囲まれた部分のコードを見てみましょう: Screenshot of the pavlova app, with the ratings and icon rows outlined in red {:.text-center} + +枠線で囲まれた部分は2つの行(Row)として実装されています。評価の行(Row)には5つの星とレビューの数が含まれています。アイコンの行(Row)には、アイコンとテキストの3つの列(Row)が含まれています。 + +評価の行(Row)に対するウィジェットツリー: + Ratings row widget tree {:.text-center} + + +ratings変数は、5つの星アイコンの小さな行(Row)とテキストを含む行(Row)を生成します: ```dart @@ -543,20 +713,30 @@ final [!ratings!] = Container( ); ``` + +{{site.alert.tip}} + 非常に深くネストされたレイアウトコードでは、読みやすくするためにUIの一部を変数や関数で実装します。 +{{site.alert.end}} + +評価行の下のアイコン行(Row)は3つの列(Column)を含んでいます。それぞれの列(Column)にはアイコンと2行のテキストが含まれています。そのウィジェットツリーは次の通りです: Icon widget tree {:.text-center} + +`iconList`変数はアイコンの行に該当します: ```dart @@ -605,8 +785,11 @@ final [!iconList!] = DefaultTextStyle.merge( ); ``` + +`leftColumn`変数には、評価とアイコンの行に加えて、ババロアについて説明するタイトルとテキストも含まれています: ```dart @@ -623,6 +806,7 @@ final [!leftColumn!] = Container( ); ``` + + +左側の列は、幅の制約をつけるためにSizedBoxに配置されています。最終的に、UIはCardの中にある全体の行(左の列と画像を含む)で構築されます。 + +ババロアの画像[Pavlova image][]は[Pixabay][]のものを使用しています。 +Image.network()を使用してネットワーク経由で画像を読み込むことができますが、 +この例では、画像はプロジェクトのimagesディレクトリに保存され、[pubspec file][]に追加され、Images.asset()を使用してアクセスしています。詳細は[Adding assets and images][]をご覧ください。 ```dart @@ -655,6 +846,7 @@ body: Center( ), ``` + +{{site.alert.tip}} + ババロアの例は、タブレットなどの広いデバイスで横向きにした時に最適に動作します。 iOSシミュレータでこの例を実行している場合は、**Hardware > Device**メニューを使用してデバイスを選択できます。この例では、iPad Proを推奨します。**Hardware > Rotate**を使用して、その向きをランドスケープモードに変更できます。また、**Window > Scale**を使用して、シミュレータウィンドウのサイズを変更することができます(論理ピクセルの数は変わりません)。 +{{site.alert.end}} **App source:** [pavlova]({{examples}}/layout/pavlova) @@ -673,8 +869,12 @@ body: Center(
+ +## よく使用されるレイアウトウィジェット + +Flutterには豊富なレイアウトウィジェットのライブラリがあります。ここでは、よく使用されるものをご紹介します。全体像を把握するためリストアップしていますが、一度にすべて覚える必要はありません。他の利用可能なウィジェットについては、[Widget catalog][]を参照するか、[API reference docs][]の検索ボックスを使用してください。また、APIドキュメントのウィジェットページでは、よニーズに合っている可能性のある類似のウィジェットが掲載されています。 + +以下のウィジェットは、[widgets library][]からの標準ウィジェットと、[Material library][]の用途に特化したウィジェットの2つのカテゴリーに分かれています。 標準ウィジェットはどのアプリでも使用できますが、Material ComponentsはMaterial Appからのみ使用できます。 + +### 標準ウィジェット -* [`Container`](#container): Adds padding, margins, borders, - background color, or other decorations to a widget. -* [`GridView`](#gridview): Lays widgets out as a scrollable grid. -* [`ListView`](#listview): Lays widgets out as a scrollable list. -* [`Stack`](#stack): Overlaps a widget on top of another. +* [`Container`](#container): ウィジェットにパディング、マージン、ボーダー、背景色、またはその他の装飾を追加します。 +* [`GridView`](#gridview): ウィジェットをスクロール可能なグリッドとして配置します。 +* [`ListView`](#listview): ウィジェットをスクロール可能なリストとして配置します。 +* [`Stack`](#stack): 他のウィジェットの上にウィジェットを重ねます。 + +### Materialウィジェット + +* [`Card`](#card): 角丸とドロップシャドウ付きのカードで関連する情報を整理します。 +* [`ListTile`](#listtile): 最大3行のテキストに、オプションで先頭と末尾にアイコンをつけて、行として整理します。 ### Container + +多くのレイアウトでは、[Container][]を積極的に使用してウィジェットの間にパッディング(Padding)を入れたり、ボーダー(Boarder)やマージン(Margin)を追加します。レイアウト全体をContainerの子要素としてに配置し、Containerの背景色や画像を変更することで、背景を変更することができます。
+ +

Containerのまとめ

+ + * パディング(Padding)、マージン(Margin)、ボーダー(Border)の追加 + * 背景色や画像の変更 + * 単一の子ウィジェットを含み、子ウィジェットはRow、Column、またはウィジェットツリーのルートであってもよい
-#### Examples (Container) +TODO:専用のウィジェットを使うべき旨注釈を入れる + +#### Containerの例 {:.no_toc} + +このレイアウトは、それぞれ2つの画像が含まれる2つの行を持つ列で構成されています。[`Container`][]は、列の背景色をより薄いグレーに変更するために使用されています。
@@ -761,8 +991,11 @@ of the column to a lighter grey.
+ +`Container`は、各画像に角丸の枠とマージンを追加するためにも使用されます: ```dart @@ -785,8 +1018,11 @@ Widget _buildImageRow(int imageIndex) => Row( ); ``` + +更に多くのContainerの例は、[tutorial][]やFlutter Gallery ([running app][], [repo][])で見つけることができます。 **App source:** [container]({{examples}}/layout/container) @@ -794,15 +1030,19 @@ and the Flutter Gallery ([running app][], [repo][]). ### GridView + +[`GridView`][]を使ってウィジェットを二次元リストとしてレイアウトします。`GridView`は2つのあらかじめ作られたリストを提供していますが、カスタムグリッドを自分で作ることもできます。`GridView`はその内容が表示領域に収まりきらないことを検出すると、自動的にスクロールします。 -#### Summary (GridView) +#### GridViewの概要 {:.no_toc} + +* ウィジェットをグリッド(格子)にレイアウトします +* 列の内容が表示領域を超えていることを検知し、自動的にスクロールを提供します +* 自分でカスタムグリッドを作成するか、提供されているグリッドの一つを使用します: + * `GridView.count`を使用すると、列の数を指定できます + * `GridView.extent`を使用すると、タイルの最大ピクセル幅を指定できます +{% comment %} +* `MediaQuery.of(context).orientation`を使用すると、デバイスがランドスケープモード(縦)かポートレートモード(横)かに応じてレイアウトが変更されるグリッドを作成できます。 +{% endcomment %} + +{{site.alert.note}} + セルがどの行と列に配置されるかが重要な二次元リストを表示する場合(例えば、「アボカド」の行の「カロリー」列のエントリーなど)、[`Table`][]や[`DataTable`][]を使用します。 +{{site.alert.end}} + + +#### GridViewの例 {:.no_toc}
A 3-column grid of photos {:.text-center} - - Uses `GridView.extent` to create a grid with tiles a maximum - 150 pixels wide. - + +最大150ピクセル幅のタイルで構成されるグリッドを作成するために、`GridView.extent`を使用します。 **App source:** [grid_and_list]({{examples}}/layout/grid_and_list)
@@ -841,11 +1099,15 @@ it automatically scrolls. alt="A 2 column grid with footers"> {:.text-center} - Uses `GridView.count` to create a grid that's 2 tiles - wide in portrait mode, and 3 tiles wide in landscape mode. - The titles are created by setting the `footer` property for - each [`GridTile`][]. - + + +`GridView.count`を使用して、縦モードでは2つのタイル幅、横モードでは3つのタイル幅のグリッドを作成します。各[`GridTile`][]の`footer`プロパティを設定することでタイトルが作成されます。 + **Dart code:** [grid_list_demo.dart]({{demo}}/material/grid_list_demo.dart) from the [Flutter Gallery][repo]
@@ -871,20 +1133,29 @@ List _buildGridTileList(int count) => List.generate( ### ListView + +[`ListView`][]は、Columnのようなウィジェットで、内容が描画領域に収まらないほど長い場合に、自動的にスクロールします。 -#### Summary (ListView) +#### ListViewの概要 {:.no_toc} + +* ボックスのリストをまとめる目的に特化した[`Column`][] +* 横方向または縦方向にレイアウトを設定できます +* 内容がフィットしないときに自動的に検出し、スクロールします +* `Column`よりは設定の自由度が少ないですが、使い方が簡単で、スクロールがサポートされています -#### Examples (ListView) +#### ListViewの例 {:.no_toc}
@@ -893,10 +1164,13 @@ its render box. alt="ListView containing movie theaters and restaurants"> {:.text-center} + + `ListTile`を使ってお店のリストを表示するために`ListView`を使用します。`Divider`が映画館とレストランを分けています。 + **App source:** [grid_and_list]({{examples}}/layout/grid_and_list)
@@ -904,10 +1178,13 @@ its render box. alt="ListView containing shades of blue"> {:.text-center} + + 特定の色の集まりに対する[Material Design palette][]の[`Colors`][]を表示するために`ListView`を使用します。 + **Dart code:** [colors_demo.dart]({{demo}}/reference/colors_demo.dart) from the [Flutter Gallery][repo]
@@ -955,18 +1232,27 @@ ListTile _tile(String title, String subtitle, IconData icon) { ### Stack + +基本的なウィジェット(多くの場合は画像)のウィジェットを重ねて配置するには[`Stack`][]を使用します。Stackはベースとなるウィジェットに、完全または部分的に重ね合わせることができます。 -#### Summary (Stack) +#### Stackの概要 {:.no_toc} + +* 別のウィジェットを上に重ね合わせる場合に使用します +* 子ウィジェットのリストの最初のウィジェットがベースになるウィジェットで、それ以降の子ウィジェットはベースのウィジェットの上に重ねられます +* `Stack`の内容はスクロールすることができません +* 描画領域を超える子ウィジェットを切り取ることを選択できます #### Examples (Stack) {:.no_toc} @@ -976,20 +1262,28 @@ or partially overlap the base widget. Circular avatar image with a label {:.text-center} - Uses `Stack` to overlay a `Container` - (that displays its `Text` on a translucent - black background) on top of a `CircleAvatar`. - The `Stack` offsets the text using the `alignment` property and - `Alignment`s. - + +`Stack`を使用して`CircleAvatar`の上に`Container`(透明な黒い背景に`Text`を表示)を重ねます。 `Stack`は`alignment`プロパティと`Alignment`を使用してテキストの位置を補正します。 + + **App source:** [card_and_stack]({{examples}}/layout/card_and_stack)
An image with a icon overlaid on top {:.text-center} - Uses `Stack` to overlay an icon on top of an image. + +画像の上にアイコンを重ね合わせるために`Stack`を使用します。 + **Dart code:** [bottom_navigation_demo.dart]({{demo}}/material/bottom_navigation_demo.dart) from the [Flutter Gallery][repo]
@@ -1027,6 +1321,7 @@ Widget _buildStack() { ### Card + +`Card`は、[Material library][]のウィジェットで、関連する情報のグループを含んでおり、ほとんどのウィジェットを元に構成することができますが、[`ListTile`][]と一緒に使用されることがよくあります。`Card`は一つの子ウィジェットを持ちますが、その子は列、行、リスト、グリッド、または複数の子ウィジェットを含む他のウィジェットを指定することができます。デフォルトでは、`Card`はサイズを0ピクセル×0ピクセルに縮小します。カードのサイズに制約を適用するために[`SizedBox`][]を使用することができます。 -#### Summary (Card) +Flutterでは、`Card`はわずかに丸みを帯びた角とドロップシャドウを特徴とし、3D効果を与えています。`Card`の`elevation`プロパティを変更することで、ドロップシャドウ効果をコントロールすることができます。例えば、elevationを24に設定すると、`Card`が表面からさらに浮き上がり、シャドウがより分散するように見えます。サポートされているelevationの値の一覧については、[Material guidelines][Material Design]の[Elevation][]を参照してください。サポートされていない値を指定すると、ドロップシャドウが完全に無効になります。 + + +#### Cardの概要 {:.no_toc} + +* [Material card][]を実装します +* 関連する情報のグループを表示するために使用します +* 単一の子ウィジェットを指定しますが、その子は`Row`、`Column`、または子のリストを持つ他のウィジェットを指定することができます +* 角丸とドロップシャドウで表示されます +* `Card`のコンテンツはスクロールできません +* [Material library][]のウィジェットです #### Examples (Card) {:.no_toc} @@ -1065,10 +1373,13 @@ Specifying an unsupported value disables the drop shadow entirely. Card containing 3 ListTiles {:.text-center} + +`SizedBox`で囲んでサイズを設定した`Card`です。この`Card`には3つの`ListTile`が含まれています。`Divider`で最初と2番目の`ListTile`を分けています。 + **App source:** [card_and_stack]({{examples}}/layout/card_and_stack)
@@ -1076,7 +1387,10 @@ Specifying an unsupported value disables the drop shadow entirely. alt="Card containing an image, text and buttons"> {:.text-center} + +画像とテキストが含まれた`Card`です。 **Dart code:** [cards_demo.dart]({{demo}}/material/cards_demo.dart) from the [Flutter Gallery][repo]