パッケージ、リポジトリ、アプリカテゴリを検索

responsive_grid のカバー
パッケージ詳細v2.4.4

responsive_grid

Flutter用の応答性のあるグリッドレイアウトとリスト

AndroidiOSWebmacOSWindowsLinux
30日間ダウンロード
1.2万
いいね数
272
Pub ポイント
115

パッケージをインストール

flutter pub add responsive_grid

パッケージ概要

公開情報に基づく選定ガイドです。参考としてご利用ください。

複数のプラットフォームで応答性のあるグリッドレイアウトとリストを可能にするFlutterパッケージです。画面サイズに応じてカラム数と余白を自動的に調整し、Android、iOS、Web、macOS、Windows、Linuxで最適なUI表示を実現します。複雑なメディアクエリロジックを書かずに、適応型インターフェースを作成するのを簡単にするものです。ダッシュボード、製品カタログ、コンテンツグリッドなど、滑らかにスケーリングが必要な用途に最適です。

用途

  • 応答性のあるダッシュボードの構築
  • 適応型製品グリッドの作成
  • クロスプラットフォームレイアウトの設計
  • 行に動的コンテンツを表示する
  • フロイドリスト構造の実装

主な機能

  • 画面サイズに応じてカラムを自動調整します
  • すべての主要なFlutterプラットフォームをサポートしています
  • 最小限のセットアップで簡単なAPI
  • カスタマイズ可能な間隔と配置
  • 組み込みのレスポンシブブレイクポイント

適している対象

  • マルチプラットフォームアプリを開発する開発者
  • 柔軟なレイアウトを必要とするUIデザイナー
  • アダプティブコンテンツグリッドを必要とするプロジェクト
  • 応答性のデザインを重視するチーム
  • さまざまなデバイスサイズをターゲットにしたアプリ

注意事項

  • 複雑なネストされたレイアウトには調整が必要になる場合があります
  • 非常に大きなデータセットへのパフォーマンスへの影響
  • 基本的なグリッド設定を超えるカスタマイズは限られている
  • 非常に動的またはアニメーション付きのグリッドには適していない
  • 親ウィジェット内の制約の正しい使用に依存する

元の README

関連するソースリポジトリの README 原文のスナップショットです。最新の内容はリポジトリをご覧ください。

responsive_grid

pub package

Responsive Grid Layout, List and many Utilities for Flutter, to achieve good UI look and feel for different screen sizes

Responsive Grid Layout

With ResponsiveGridRow and ResponsiveGridCol you can get the same behavior of bootstrap Grid System

Give every col the width it shall occupy at every size category assuming the total width is 12 (by default)

        ResponsiveGridRow(
          children: [
            ResponsiveGridCol(
              lg: 12,
              child: Container(
                height: 100,
                alignment: Alignment(0, 0),
                color: Colors.purple,
                child: Text("lg : 12"),
              ),
            ),
            ResponsiveGridCol(
              xs: 6,
              md: 3,
              child: Container(
                height: 100,
                alignment: Alignment(0, 0),
                color: Colors.green,
                child: Text("xs : 6 \r\nmd : 3"),
              ),
            ),
            ResponsiveGridCol(
              xs: 6,
              md: 3,
              child: Container(
                height: 100,
                alignment: Alignment(0, 0),
                color: Colors.orange,
                child: Text("xs : 6 \r\nmd : 3"),
              ),
            ),
            ResponsiveGridCol(
              xs: 6,
              md: 3,
              child: Container(
                height: 100,
                alignment: Alignment(0, 0),
                color: Colors.red,
                child: Text("xs : 6 \r\nmd : 3"),
              ),
            ),
            ResponsiveGridCol(
              xs: 6,
              md: 3,
              child: Container(
                height: 100,
                alignment: Alignment(0, 0),
                color: Colors.blue,
                child: Text("xs : 6 \r\nmd : 3"),
              ),
            ),
          ],
        )

Responsive Grid List

ResponsiveGridList works differently in that you only specify a desired width for the items and spacing, and it will decide how many items shall fit in a line, and the width of the item and spacing will change (only small change) to fill the entire width

    ResponsiveGridList(
        desiredItemWidth: 100,
        minSpacing: 10,
        children: List.generate(20, (index)=> index+1).map((i) {
          return Container(
            height: 100,
            alignment: Alignment(0, 0),
            color: Colors.cyan,
            child: Text(i.toString()),
          );
        }).toList()
    )

Responsive Staggered Grid List

The same as the ResponsiveGridList, but arranges items in columns inside one big row, so every item has independent height

Utilities

ResponsiveWidget , ResponsiveBuilder, ResponsiveLayoutBuilder and responsiveValue()

To provide a custom responsive Widget, Builder or a single value, for every size tier

ResponsiveLocalWidget, ResponsiveLocalBuilder and ResponsiveLocalLayoutBuilder

To provide a responsive Widget or Builder for its own width, not the viewport's, they are just wrappers on top of flutter LayoutBuilder

Warning: make sure not to use any of them inside unbounded width widget, as the width will be read infinity

ResponsiveWidget and ResponsiveBuilder

To create widgets conditionally for every size tier

ResponsiveLayoutBuilder

To create different layouts for every size tier, for example put children inside a Column for XS and in a Row from MD and larger

ResponsiveLayoutBuilder(
                  xs: (BuildContext context, List<Widget> children) => Column(
                    children: children,
                  ),
                  md: (BuildContext context, List<Widget> children) => Row(
                    children: children,
                  ),
                  children: .....,
                ),
responsiveValue()

A conditional value on size tier, may be used to achieve any complicated behavior, for example say you have a GridView you can make the crossAxisCount increase with the width

GridView.count(
            crossAxisCount: responsiveValue(context, xs: 2, sm: 3, md: 4, lg: 6, xl: 7),
            children: .....
          )

Another example you can make a widget visible in small sizes and hidden starting from MD tier

Visibility(
      visible: responsiveValue(context, xs: true, md: false),
      child: .....)
ResponsiveLocalWidget and ResponsiveLocalBuilder

To create widgets conditionally for each specified available width for it

ResponsiveLocalLayoutBuilder

To Layout widgets conditionally for each specified available width for them, for example say you want to put children inside a Column if available space width is less than 500 and in a Row if larger

ResponsiveLocalLayoutBuilder(configs: [
                  ResponsiveLayoutBuilderConfig(
                    upToWidth: 500,
                    builder: (BuildContext context, List<Widget> children) => Column(
                      children: children,
                    ),
                  ),
                  ResponsiveLayoutBuilderConfig(
                    upToWidth: double.infinity,
                    builder: (BuildContext context, List<Widget> children) => Row(
                      children: children,
                    ),
                  )
                ], children: .....)

Override breakpoints

Add before attaching App widget

ResponsiveGridBreakpoints.value = ResponsiveGridBreakpoints(
  xs: 600,
  sm: 905, 
  md: 1240,
  lg: 1440,
);

カテゴリー

ソースリポジトリ

このパッケージを使用しているプロジェクト