已经有一个包可以满足你的所有需求,那就是StaggeredGridView。
这与您描述的语法不完全一样,但功能应该更大或相同。您可以通过设置mainAxisSpacing 和crossAxisSpacing 添加装订线,使用crossAxisCount 设置列(或行,取决于方向)计数。
要指定子级使用的空间,您定义一个staggeredTiles 列表,其中每个StaggeredTile 代表相同索引的子级。
它不完全与 Bootstrap 网格相同,但已经足够接近了。
我整理了一个超级苗条的例子:
import 'package:flutter/material.dart';
import 'package:flutter_staggered_grid_view/flutter_staggered_grid_view.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: StaggeredGridView.count(
mainAxisSpacing: 8.0,
crossAxisSpacing: 8.0,
crossAxisCount: 12,
staggeredTiles: [
StaggeredTile.count(6, 6),
StaggeredTile.count(4, 1),
StaggeredTile.count(2, 2),
StaggeredTile.count(2, 2),
],
children: <Widget>[
Container(
color: Colors.red,
child: Text('6,6')
),
Container(
color: Colors.green,
child: Text('4,1')
),
Container(
color: Colors.blue,
child: Text('2,2')
),
Container(
color: Colors.yellow,
child: Text('2,2')
),
],
),
),
);
}
}