Flutter注解与布局辅助插件paddinger_annotations的使用
Flutter注解与布局辅助插件paddinger_annotations的使用
paddinger_annotations
paddinger_annotations
是一个用于 paddinger
的注解包。单独使用 paddinger_annotations
没有任何效果,必须结合 paddinger
包一起使用。
示例代码
paddings.dart
// ignore: unused_import
import 'package:flutter/material.dart';
import 'package:paddinger_annotations/paddinger_annotations.dart';
part 'paddings.g.dart';
@paddinger
const double PADDING_NORMAL = 8;
@paddinger
const double PADDING_EXTREME = 56;
在这个文件中,我们定义了两个常量 PADDING_NORMAL
和 PADDING_EXTREME
,并用 @paddinger
注解标记它们。
main.dart
import 'package:example/paddings.dart';
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
home: Scaffold(
body: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
// 使用 PADDING_NORMAL 的所有方向的填充
NormalAllPadding(
child: Row(
children: [
Text("Hello Paddinger"),
],
),
),
// 使用 PADDING_EXTREME 的垂直方向填充
ExtremeVerticalPadding(
child: Row(
children: [
Text("Hello Paddinger again"),
],
),
)
],
),
),
);
}
}
在这个文件中,我们导入了 paddings.dart
文件,并在 build
方法中创建了一个 MaterialApp
和 Scaffold
。我们使用了自定义的 NormalAllPadding
和 ExtremeVerticalPadding
组件来应用不同的内边距。
自定义组件
为了使上述代码工作,我们需要自定义一些组件来应用这些内边距。以下是这些组件的实现:
NormalAllPadding
class NormalAllPadding extends StatelessWidget {
final Widget child;
NormalAllPadding({required this.child});
[@override](/user/override)
Widget build(BuildContext context) {
return Padding(
padding: EdgeInsets.all(PADDING_NORMAL),
child: child,
);
}
}
NormalAllPadding
组件使用 PADDING_NORMAL
来为子组件添加四面的内边距。
ExtremeVerticalPadding
class ExtremeVerticalPadding extends StatelessWidget {
final Widget child;
ExtremeVerticalPadding({required this.child});
[@override](/user/override)
Widget build(BuildContext context) {
return Padding(
padding: EdgeInsets.symmetric(vertical: PADDING_EXTREME),
child: child,
);
}
}
更多关于Flutter注解与布局辅助插件paddinger_annotations的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
1 回复