Flutter装饰容器插件flutter_decorated_container的使用
Flutter装饰容器插件flutter_decorated_container的使用
flutter_decorated_container
是一个用于创建带有虚线或点状边框的自定义容器的小部件。该插件提供了多种配置选项,使您可以轻松地为任何小部件添加装饰性边框。
特性
- 支持虚线边框和圆角半径
- 可自定义虚线颜色
- 虚线宽度和间距可调
- 支持设置背景颜色
使用方法
默认值示例
DecoratedContainer(
cornerRadius: 16,
fillColor: Colors.white,
strokeColor: Colors.red,
child: Center(child: Text("sample child widget")),
)
自定义值示例
DecoratedContainer(
strokeWidth: 3,
dashSpace: 4,
dashWidth: 6,
fillColor: Colors.white,
cornerRadius: 16,
strokeColor: Colors.red,
child: Center(child: Text("sample child widget")),
)
示例UI截图
配置参数
参数名 | 默认值 | 用途 |
---|---|---|
strokeColor |
Colors.grey |
指定容器边框的颜色 |
backgroundColor |
Colors.white |
指定容器内部填充的颜色 |
strokeWidth |
2.0 |
定义边框的厚度 |
dashWidth |
5.0 |
指定虚线边框中每个虚线的宽度 |
dashSpace |
3.0 |
指定虚线边框中每个虚线之间的间距 |
cornerRadius |
null |
定义圆角半径。如果为 null ,则形状为直角 |
padding |
null |
在装饰之外添加额外的内边距 |
margin |
null |
包围装饰和子组件的外边距 |
decoration |
null |
实际绘制在子组件后面的装饰。使用 backgroundColor 属性指定简单的纯色背景。当此属性有值时,虚线/点状边框会被覆盖 |
decorationPosition |
DecorationPosition.background |
定义子组件的位置,默认情况下装饰绘制在子组件后面 |
child |
null |
容器中的子组件 |
完整示例代码
以下是一个完整的示例,展示了如何在应用中使用 flutter_decorated_container
插件:
import 'package:flutter/material.dart';
import 'package:flutter_decorated_container/flutter_decorated_container.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
useMaterial3: true,
),
home: const MyHomePage(title: 'Flutter Demo Home Page'),
);
}
}
class MyHomePage extends StatefulWidget {
const MyHomePage({super.key, required this.title});
final String title;
[@override](/user/override)
State<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
int _counter = 0;
void _incrementCounter() {
setState(() {
_counter++;
});
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
backgroundColor: Theme.of(context).colorScheme.inversePrimary,
title: Text(widget.title),
),
body: Padding(
padding: const EdgeInsets.all(16),
child: Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
mainAxisAlignment: MainAxisAlignment.center,
children: [
DecoratedContainer(
backgroundColor: Colors.white,
strokeColor: Colors.red,
padding: const EdgeInsets.all(16),
child: Column(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
const Text(
'You have pushed the button this many times:',
),
Text(
'$_counter',
style: Theme.of(context).textTheme.headlineMedium,
),
],
),
),
const SizedBox(
height: 16,
),
DecoratedContainer(
decoration: BoxDecoration(
color: Colors.yellow.withOpacity(0.5),
borderRadius: BorderRadius.circular(12),
border: Border.all(color: Colors.orange, width: 3),
),
backgroundColor: Colors.white,
strokeColor: Colors.red,
padding: const EdgeInsets.all(16),
child: Column(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
const Text(
'You have pushed the button this many times:',
),
Text(
'$_counter',
style: Theme.of(context).textTheme.headlineMedium,
),
],
),
)
],
),
),
floatingActionButton: FloatingActionButton(
onPressed: _incrementCounter,
tooltip: 'Increment',
child: const Icon(Icons.add),
),
);
}
}
更多关于Flutter装饰容器插件flutter_decorated_container的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter装饰容器插件flutter_decorated_container的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是如何在Flutter中使用flutter_decorated_container
插件的一个示例代码案例。这个插件允许你轻松地创建和装饰容器,提供了更多的自定义选项。
首先,确保你已经在pubspec.yaml
文件中添加了flutter_decorated_container
依赖:
dependencies:
flutter:
sdk: flutter
flutter_decorated_container: ^x.y.z # 请替换为最新版本号
然后运行flutter pub get
来安装依赖。
以下是一个简单的示例,展示了如何使用flutter_decorated_container
来创建一个装饰过的容器:
import 'package:flutter/material.dart';
import 'package:flutter_decorated_container/flutter_decorated_container.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Flutter Decorated Container Example'),
),
body: Center(
child: DecoratedContainer(
decoration: BoxDecoration(
color: Colors.blue.shade200,
borderRadius: BorderRadius.circular(16),
boxShadow: [
BoxShadow(
color: Colors.black.withOpacity(0.2),
spreadRadius: 5,
blurRadius: 7,
offset: Offset(0, 3), // changes position of shadow
),
],
),
child: Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
Text(
'Hello, Flutter!',
style: TextStyle(fontSize: 24, color: Colors.black87),
),
SizedBox(height: 16),
ElevatedButton(
onPressed: () {},
child: Text('Click Me'),
style: ButtonStyle(
backgroundColor: MaterialStateProperty.all(Colors.blue),
foregroundColor: MaterialStateProperty.all(Colors.white),
),
),
],
),
),
),
),
),
);
}
}
在这个示例中,我们使用了DecoratedContainer
来创建一个具有背景颜色、圆角、阴影装饰的容器。容器内部包含了一个居中的Column
,其中包含了一段文本和一个按钮。
decoration
属性允许你定义容器的装饰,比如背景颜色、边框半径和阴影。child
属性定义了容器内部的内容。
注意,flutter_decorated_container
插件本身可能提供了更多功能,但这个示例展示了其基本的用法。如果你需要更高级的功能,请参考插件的官方文档和示例代码。
由于flutter_decorated_container
插件的具体API和功能可能会随着版本更新而变化,建议查阅最新的官方文档以确保代码的正确性和功能完整性。