Flutter自定义容器插件clay_containers的使用

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

Flutter自定义容器插件clay_containers的使用

Clay Containers 是一个用于实现美观、现代的拟态设计(Neumorphic Design)的Flutter插件。这些粘土容器可以成为您自己独特拟态设计的基础。

安装

要将 clay_containers 添加到您的项目中,只需将其作为依赖项添加到 pubspec.yaml 文件中即可。这是一个简单的Dart插件,因此不需要额外配置iOS和Android。

dependencies:
  clay_containers: ^最新版本号

示例代码

简单的 ClayContainer

为了获得最佳效果,请确保周围小部件的背景颜色与您为粘土容器设置的颜色相匹配。在下面的例子中,我们将颜色设置为 baseColor

import 'package:clay_containers/clay_containers.dart';
import 'package:flutter/material.dart';

class MyExampleScreen extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    Color baseColor = const Color(0xFFF2F2F2);

    return Container(
      color: baseColor,
      child: Center(
        child: ClayContainer(
          color: baseColor,
          height: 200,
          width: 200,
        ),
      ),
    );
  }
}

带有 ClayText 子组件的 ClayContainer

在这个例子中,我们给 ClayContainer 添加了一个带有内边距的 ClayText

ClayContainer(
  color: baseColor,
  child: Padding(
    padding: const EdgeInsets.all(20),
    child: ClayText("Seize the Clay!", emboss: true, size: 40),
  ),
)

圆角 ClayContainer

通过设置 borderRadiuscustomBorderRadius 可以创建圆角或自定义形状的 ClayContainer

// 圆形 ClayContainer
ClayContainer(
  color: baseColor,
  height: 150,
  width: 150,
  borderRadius: 75,
)

// 自定义形状 ClayContainer
ClayContainer(
  color: baseColor,
  height: 150,
  width: 150,
  customBorderRadius: BorderRadius.only(
    topRight: Radius.elliptical(150, 150),
    bottomLeft: Radius.circular(50),
  ),
)

凹凸效果 ClayContainer

可以通过设置 emboss 属性来创建凹凸效果,默认是凹陷效果。

ClayContainer(
  emboss: true,
  color: baseColor,
  height: 150,
  width: 150,
  borderRadius: 75,
)

更改默认的扩散和深度

可以通过修改 depthspread 参数来自定义 Neumorphic 效果。

ClayContainer(
  color: baseColor,
  height: 150,
  width: 150,
  borderRadius: 75,
  depth: 40,
  spread: 40,
)

Concave 和 Convex 效果

通过传递 CurveType.concaveCurveType.convex 来创建凹面或凸面效果。

Row(
  mainAxisAlignment: MainAxisAlignment.center,
  children: [
    ClayContainer(
      color: baseColor,
      height: 150,
      width: 150,
      borderRadius: 75,
      curveType: CurveType.concave,
    ),
    SizedBox(width: 50),
    ClayContainer(
      color: baseColor,
      height: 150,
      width: 150,
      borderRadius: 75,
      curveType: CurveType.none,
    ),
    SizedBox(width: 50),
    ClayContainer(
      color: baseColor,
      height: 150,
      width: 150,
      borderRadius: 75,
      curveType: CurveType.convex,
    ),
  ],
)

动画效果

使用 ClayAnimatedContainer 创建动画效果,类似于 AnimatedContainer

ClayAnimatedContainer(
  duration: const Duration(seconds: 1),
  curve: Curves.easeInOut,
  height: 200,
  width: 200,
  color: baseColor,
  borderRadius: 50,
  depth: 30,
)

主题化

通过 ClayThemeClayThemeData 在整个应用中统一设置 ClayContainer 的样式。

ClayTheme(
  themeData: const ClayThemeData(
    height: 10,
    width: 20,
    borderRadius: 360,
    textTheme: ClayTextTheme(style: TextStyle()),
    depth: 12,
  ),
  child: ColoredBox(
    color: baseColor,
    child: Center(
      child: ClayContainer(
        color: baseColor,
        height: 240,
        width: 240,
        curveType: CurveType.concave,
        spread: 30,
        depth: 50,
      ),
    ),
  ),
)

以上就是关于 clay_containers 插件的基本用法和一些示例代码。希望对您有所帮助!


更多关于Flutter自定义容器插件clay_containers的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter自定义容器插件clay_containers的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是如何在Flutter中使用clay_containers插件来创建自定义容器的示例代码。clay_containers是一个流行的Flutter包,它提供了多种美观且可定制的容器样式,使得UI设计更加灵活和美观。

首先,确保你已经在pubspec.yaml文件中添加了clay_containers依赖:

dependencies:
  flutter:
    sdk: flutter
  clay_containers: ^x.y.z  # 请替换为最新版本号

然后,运行flutter pub get来安装依赖。

接下来是一个完整的示例,展示如何使用clay_containers来创建一个自定义的容器:

import 'package:flutter/material.dart';
import 'package:clay_containers/clay_containers.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Clay Containers Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: Scaffold(
        appBar: AppBar(
          title: Text('Clay Containers Demo'),
        ),
        body: Center(
          child: CustomClayContainer(),
        ),
      ),
    );
  }
}

class CustomClayContainer extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return ClayContainer(
      borderRadius: BorderRadius.circular(30),
      color: Colors.deepOrange.shade400,
      depth: 10,
      elevation: 15,
      spread: 5,
      child: Container(
        width: 200,
        height: 200,
        alignment: Alignment.center,
        child: Text(
          'Hello, Clay Container!',
          style: TextStyle(
            color: Colors.white,
            fontSize: 24,
            fontWeight: FontWeight.bold,
          ),
        ),
      ),
    );
  }
}

在这个示例中:

  • ClayContainer 是我们使用的自定义容器组件。
  • borderRadius 属性用于设置容器的圆角半径。
  • color 属性设置容器的背景颜色。
  • depth 属性用于控制容器的3D深度效果。
  • elevation 属性用于设置容器的阴影高度。
  • spread 属性用于控制阴影的扩展程度。
  • child 属性允许我们嵌套其他小部件,这里我们嵌套了一个居中的文本。

你可以根据需要调整这些属性来创建符合你设计需求的自定义容器。clay_containers 提供了丰富的配置选项,使得你可以轻松实现各种视觉效果。

回到顶部