flutter_spanned_grid_view 1.0.0 copy "flutter_spanned_grid_view: ^1.0.0" to clipboard
flutter_spanned_grid_view: ^1.0.0 copied to clipboard

Flutter Spanned Grid View

flutter_spanned_grid_view #

A highly flexible and performant Flutter package for displaying grid layouts with variable item spans, similar to Android's SpannedGrid. Build beautiful, responsive grids with custom item widgets and dynamic column spans, supporting any data type.

Features #

  • Display items in a grid with variable column spans (like Pinterest or Android's SpannedGrid)
  • Works with any data type via a generic interface
  • Efficient: Only builds widgets as they enter the viewport (like ListView.builder)
  • Customizable item widgets via builder function
  • Supports dynamic or fixed column counts
  • Easy integration with existing Flutter projects
  • Null safety and sound typing

Getting Started #

Add the package to your pubspec.yaml:

dependencies:
  flutter_spanned_grid_view: ^1.0.0

Then run:

flutter pub get

Usage #

Import the package:

import 'package:flutter_spanned_grid_view/flutter_spanned_grid_view.dart';

Define Your Item Type #

Implement the SpannedGridItem interface for your data model:

class MyGridItem implements SpannedGridItem {
  @override
  final String id;
  @override
  final int? gridSpan; // Number of columns to span
  final String title;

  MyGridItem({required this.id, required this.title, this.gridSpan});
}

Use SpannedGridView #

SpannedGridView<MyGridItem>(
  items: myItemsList,
  maxColumns: 3, // Set max columns or leave null for auto
  itemBuilder: (context, item, index) {
    return Card(
      child: Center(child: Text(item.title)),
    );
  },
)

Example #

final items = [
  MyGridItem(id: '1', title: 'A', gridSpan: 2),
  MyGridItem(id: '2', title: 'B', gridSpan: 1),
  MyGridItem(id: '3', title: 'C', gridSpan: 3),
];

SpannedGridView<MyGridItem>(
  items: items,
  maxColumns: 3,
  itemBuilder: (context, item, index) => Card(
    child: Center(child: Text(item.title)),
  ),
)

API Reference #

SpannedGridView #

Property Description
items List of items to display
itemBuilder Widget builder for each item
maxColumns Maximum number of columns (optional)

SpannedGridItem #

Implement this interface for your data model:

  • String id (unique identifier)
  • int? gridSpan (number of columns to span)

Why Use flutter_spanned_grid_view? #

  • Performance: Only builds visible widgets
  • Flexibility: Works with any data type and custom widgets
  • Easy to Use: Simple API, integrates with existing code
  • Responsive: Adapts to different screen sizes and item spans

Roadmap #

  • Drag & drop support
  • Animations
  • RTL support
  • More layout options

Contributing #

Contributions are welcome! Please open issues or submit pull requests on GitHub.

License #

MIT License. See LICENSE.

Keywords #

flutter, grid, spanned, staggered, layout, builder, responsive, custom, widget, list, performance, dynamic, columns, masonry, pinterest, android, flexible, dart


For more details and advanced usage, see the example directory.

6
likes
150
points
16
downloads

Publisher

unverified uploader

Weekly Downloads

Flutter Spanned Grid View

Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (license)

Dependencies

flutter

More

Packages that depend on flutter_spanned_grid_view