Flutter布局插件advanced_column_row的使用
Flutter布局插件advanced_column_row的使用
AdvancedColumnRow
是一个 Flutter 包,通过添加自定义选项(如填充、间隔小部件、装饰、对齐和其他灵活属性)来改进默认的 Column
和 Row
小部件。该包帮助你在 Flutter 中构建更具视觉吸引力且更灵活的布局。
功能
- 改进后的
<strong>Column</strong>
和<strong>Row</strong>
小部件。 <strong>Padding</strong>
可以控制整个小部件周围的间距。<strong>Gap widgets</strong>
可以控制子元素之间的间距。<strong>Decoration</strong>
选项,如背景颜色和边框。<strong>Alignment</strong>
设置可以控制子小部件的位置。
还有很多其他功能。
安装
在你的 <code>pubspec.yaml</code>
文件中添加以下依赖项:
dependencies:
advanced_column_row: ^1.0.0
然后运行:
flutter pub get
使用
要使用该包,在 Dart 文件中导入它:
import 'package:advanced_column_row/advanced_column_row.dart';
当然!下面是 <strong>示例</strong>
部分,分别展示了 <code>AdvancedColumn</code>
和 <code>AdvancedRow</code>
的示例。
示例
以下是 <code>AdvancedColumn</code>
和 <code>AdvancedRow</code>
的基本示例:
AdvancedColumn 示例
import 'package:flutter/material.dart';
import 'package:advanced_column_row/advanced_column_row.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: const Text('Advanced Column Example')),
body: Padding(
padding: const EdgeInsets.all(20.0),
child: AdvancedColumn(
padding: const EdgeInsets.all(16),
gapWidget: const SizedBox(height: 10),
decoration: BoxDecoration(
color: Colors.lightBlue[50],
borderRadius: BorderRadius.circular(8),
),
alignment: Alignment.center,
children: const [
Text('Advanced Column - Child 1'),
Text('Advanced Column - Child 2'),
],
),
),
),
);
}
}
这将渲染一个带有两个文本子元素、间距为 10 像素且具有背景颜色和填充的 <code>AdvancedColumn</code>
。
AdvancedRow 示例
import 'package:flutter/material.dart';
import 'package:advanced_column_row/advanced_column_row.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: const Text('Advanced Row Example')),
body: Padding(
padding: const EdgeInsets.all(20.0),
child: AdvancedRow(
padding: const EdgeInsets.all(16),
gapWidget: const SizedBox(width: 10),
decoration: BoxDecoration(
color: Colors.lightGreen[50],
borderRadius: BorderRadius.circular(8),
),
alignment: Alignment.center,
children: const [
Text('Advanced Row - Child 1'),
Text('Advanced Row - Child 2'),
],
),
),
),
);
}
}
这将渲染一个带有两个子元素、间距为 10 像素且具有背景颜色和填充的 <code>AdvancedRow</code>
。
高级演示

API 参考
AdvancedColumn
AdvancedColumn
是一个可定制的小部件,继承自 Column
并提供了额外的属性,允许你配置布局、填充、装饰和对齐选项。
构造函数:
const AdvancedColumn({
Key? key,
AlignmentGeometry? alignment,
EdgeInsetsGeometry? padding,
Decoration? decoration,
Decoration? foregroundDecoration,
double? width,
double? height,
BoxConstraints? constraints,
EdgeInsetsGeometry? margin,
Matrix4? transform,
AlignmentGeometry? transformAlignment,
List<Widget> children = const [],
Clip clipBehavior = Clip.none,
Widget gapWidget = const SizedBox(height: 0, width: 0),
MainAxisAlignment mainAxisAlignment = MainAxisAlignment.start,
MainAxisSize mainAxisSize = MainAxisSize.max,
CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.center,
TextDirection? textDirection,
VerticalDirection verticalDirection = VerticalDirection.down,
TextBaseline? textBaseline,
})
属性:
<code>alignment</code>
: 在可用空间内对齐列。<code>padding</code>
: 在列内的内容周围添加填充。<code>decoration</code>
: 应用背景装饰到列上,如颜色或边框。<code>foregroundDecoration</code>
: 在列的内容上添加前景装饰。<code>width</code>
和<code>height</code>
: 设置列的尺寸。<code>constraints</code>
: 指定列大小的额外约束。<code>margin</code>
: 设置列外的空间。<code>transform</code>
和<code>transformAlignment</code>
: 对列应用变换(例如缩放、旋转),并控制对齐方式。<code>children</code>
: 显示为列内容的列表。<code>clipBehavior</code>
: 确定当内容溢出时列应如何剪裁其内容。<code>gapWidget</code>
: 在每个子元素之间添加可自定义的间隙小部件(不包括最顶部和最底部)。<code>mainAxisAlignment</code>
: 控制沿主(垂直)轴的子元素对齐。<code>mainAxisSize</code>
: 定义列应占用多少垂直空间。<code>crossAxisAlignment</code>
: 设置沿交叉(水平)轴的子元素对齐。<code>textDirection</code>
: 指定文本方向,影响子小部件的布局。<code>verticalDirection</code>
: 从上到下或反之排列子元素。<code>textBaseline</code>
: 沿基线对齐文本,用于与<code>crossAxisAlignment</code>
结合使用。
AdvancedRow
AdvancedRow
类似于 Row
,但增加了增强的布局、填充、装饰和间距自定义功能。
构造函数:
const AdvancedRow({
Key? key,
AlignmentGeometry? alignment,
EdgeInsetsGeometry? padding,
Decoration? decoration,
Decoration? foregroundDecoration,
double? width,
double? height,
BoxConstraints? constraints,
EdgeInsetsGeometry? margin,
Matrix4? transform,
AlignmentGeometry? transformAlignment,
List<Widget> children = const [],
Clip clipBehavior = Clip.none,
Widget gapWidget = const SizedBox(height: 0, width: 0),
MainAxisAlignment mainAxisAlignment = MainAxisAlignment.start,
MainAxisSize mainAxisSize = MainAxisSize.max,
CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.center,
TextDirection? textDirection,
VerticalDirection verticalDirection = VerticalDirection.down,
TextBaseline? textBaseline,
})
属性:
<code>alignment</code>
: 在容器内对齐行的内容。<code>padding</code>
: 在行的内部内容周围添加填充。<code>decoration</code>
: 应用背景装饰到行上,如颜色或边框。<code>foregroundDecoration</code>
: 在行的内容上添加前景装饰。<code>width</code>
和<code>height</code>
: 定义行的尺寸。<code>constraints</code>
: 添加额外的约束以控制行的尺寸。<code>margin</code>
: 设置行外的空间。<code>transform</code>
和<code>transformAlignment</code>
: 对行应用变换(例如旋转、缩放),并控制对齐方式。<code>children</code>
: 显示在行内的小部件。<code>clipBehavior</code>
: 控制行在其溢出时如何剪裁其内容。<code>gapWidget</code>
: 在行中的每个子元素之间添加可自定义的间隙小部件(不包括最外层的元素)。<code>mainAxisAlignment</code>
: 沿主(水平)轴对齐子元素。<code>mainAxisSize</code>
: 确定行应占用多少水平空间。<code>crossAxisAlignment</code>
: 控制沿交叉(垂直)轴的对齐方式。<code>textDirection</code>
: 指定文本方向,影响子小部件的布局。<code>verticalDirection</code>
: 在行内从上到下或反之排列子元素。<code>textBaseline</code>
: 沿基线对齐文本,特别是与<code>crossAxisAlignment</code>
结合使用时。
每个属性都允许你精确调整 <code>AdvancedColumn</code>
和 <code>AdvancedRow</code>
的布局和外观,使其更容易根据复杂的 UI 要求进行定制。
高级用法
使用 <code>gapWidget</code>
进行自定义间距
<code>gapWidget</code>
属性提供了灵活性,可以在子元素之间添加任何类型的组件(通常是 <code>SizedBox</code>
)以创建一致的间距。你也可以使用自定义组件在子元素之间分离它们,具有独特的设计。
AdvancedColumn(
gapWidget: const Divider(color: Colors.blue), // 在子元素之间添加一个 Divider
children: const [
Text('Advanced Column Item 1'),
Text('Advanced Column Item 2'),
],
)
使用 <code>decoration</code>
进行样式设置
<code>decoration</code>
属性允许你添加各种样式,如边框、阴影或渐变,使得创建视觉吸引人的布局更加容易。
AdvancedRow(
decoration: BoxDecoration(
color: Colors.white,
border: Border.all(color: Colors.grey),
boxShadow: [BoxShadow(blurRadius: 5, color: Colors.black26)],
),
children: const [
Text('Styled Row Item 1'),
Text('Styled Row Item 2'),
],
)
更多关于Flutter布局插件advanced_column_row的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter布局插件advanced_column_row的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
advanced_column_row
是一个用于 Flutter 的布局插件,它扩展了 Flutter 内置的 Column
和 Row
组件,提供了更多的布局选项和更灵活的配置。使用这个插件,你可以更轻松地创建复杂的布局结构。
安装
首先,你需要在 pubspec.yaml
文件中添加 advanced_column_row
依赖:
dependencies:
flutter:
sdk: flutter
advanced_column_row: ^1.0.0 # 请检查最新版本
然后运行 flutter pub get
来安装依赖。
基本使用
advanced_column_row
提供了 AdvancedColumn
和 AdvancedRow
两个组件,它们分别类似于 Flutter 的 Column
和 Row
,但提供了更多的功能。
AdvancedColumn
AdvancedColumn
允许你在垂直方向上排列子组件,并提供了一些额外的功能,比如间距、对齐方式等。
import 'package:flutter/material.dart';
import 'package:advanced_column_row/advanced_column_row.dart';
class MyHomePage extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('AdvancedColumn Example'),
),
body: AdvancedColumn(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
spacing: 20.0, // 子组件之间的间距
children: <Widget>[
Text('Item 1'),
Text('Item 2'),
Text('Item 3'),
],
),
);
}
}
AdvancedRow
AdvancedRow
允许你在水平方向上排列子组件,并提供了一些额外的功能,比如间距、对齐方式等。
import 'package:flutter/material.dart';
import 'package:advanced_column_row/advanced_column_row.dart';
class MyHomePage extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('AdvancedRow Example'),
),
body: AdvancedRow(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
crossAxisAlignment: CrossAxisAlignment.center,
spacing: 10.0, // 子组件之间的间距
children: <Widget>[
Text('Item 1'),
Text('Item 2'),
Text('Item 3'),
],
),
);
}
}
高级功能
advanced_column_row
还提供了一些高级功能,比如:
- Spacing: 可以设置子组件之间的间距。
- Padding: 可以设置整个布局的内边距。
- Alignment: 可以更精确地控制子组件的对齐方式。
- Flex: 可以设置子组件的 flex 值,类似于
Flexible
和Expanded
。
示例:复杂布局
以下是一个使用 AdvancedColumn
和 AdvancedRow
创建复杂布局的示例:
import 'package:flutter/material.dart';
import 'package:advanced_column_row/advanced_column_row.dart';
class MyHomePage extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Complex Layout Example'),
),
body: AdvancedColumn(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
spacing: 20.0,
children: <Widget>[
AdvancedRow(
spacing: 10.0,
children: <Widget>[
Icon(Icons.star, size: 50),
Icon(Icons.star, size: 50),
Icon(Icons.star, size: 50),
],
),
Text('Welcome to Flutter'),
AdvancedRow(
spacing: 10.0,
children: <Widget>[
ElevatedButton(
onPressed: () {},
child: Text('Button 1'),
),
ElevatedButton(
onPressed: () {},
child: Text('Button 2'),
),
],
),
],
),
);
}
}