패키지, 저장소 및 앱 카테고리 검색

GitHub 저장소muhammad369/ResponsiveGrid_Flutter

ResponsiveGrid_Flutter

Flutter용 반응형 그리드 레이아웃

ResponsiveGrid_Flutter 프로젝트 이미지
스타
91
포크
33
최근 푸시(UTC)
2026. 2. 11.
프로젝트 상태
활성

원본 README

아래는 영문 원문 스냅샷입니다. 최신 내용은 GitHub에서 확인하세요.

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,
);
Mohamed Ali GitHub avatar
GitHub 작성자

Mohamed Ali ↗

언어DartC++CMakeHTMLCSwiftKotlinObjective-C

분류

이 저장소가 배포한 패키지

사용 중인 의존성

의존성 목록 3 개

  • flutter{"sdk":"flutter"}
  • flutter_test개발 의존성{"sdk":"flutter"}
  • flutter_lints개발 의존성^1.0.0

프로젝트에 맞는 저장소를 선택하려면?

사용 목적에 따라 검색하고 개발 활동을 비교한 뒤 원본 저장소에서 요구 사항을 확인하세요.

  1. 이름, 작성자 또는 설명으로 검색하고 기술 주제로 범위를 좁힙니다.
  2. 스타, 포크, 최근 푸시를 함께 비교하세요. 스타는 관심의 지표이며 품질을 보장하지 않습니다.
  3. 사용하기 전에 GitHub에서 README, 라이선스, Issues를 확인하세요.

출처 및 관리

“A repository is the most basic element of GitHub.”

GitHub Docs — About repositories ↗