Flutter装饰容器插件flutter_decorated_container的使用

发布于 1周前 作者 gougou168 来自 Flutter

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截图

Sample 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

1 回复

更多关于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和功能可能会随着版本更新而变化,建议查阅最新的官方文档以确保代码的正确性和功能完整性。

回到顶部