Flutter自定义组件插件custom_widgets_2的使用

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

Flutter自定义组件插件custom_widgets_2的使用

custom_widgets_2

pub package

这个包包含了一组在任何Flutter项目中都不可或缺的自定义组件。这些组件旨在提供易于处理的功能并增强用户体验。

包含的组件

  • CustomElevatedButton: 一个具有多种样式选项的可定制按钮组件。
  • CustomTextField: 一个具有验证和输入格式化等附加功能的自定义文本字段组件。
  • CustomText: 一个带有文本的自定义Text组件。
  • CustomDropDownButton: 一个多下拉项的自定义下拉按钮组件。
  • CustomSteper: 一个步骤指示器的自定义组件。
  • CustomCachNetwork: 一个用于显示网络图片的缓存网络组件。
  • CustomDivider: 一个用于显示分隔线的自定义组件。
  • ContainerSadow: 一个带阴影效果的容器组件。
  • sh: 一个具有高度的SizedBox组件。
  • sw: 一个具有宽度的SizedBox组件。

安装

在你的pubspec.yaml文件中添加以下行:

dependencies:
  custom_widgets_2: <last version>

<last version>替换为在pub.dev上可用的最新版本。

然后运行以下命令来安装包:

flutter pub get

使用

在你的Dart代码中导入包:

import 'package:custom_widgets_2/custom_widgets_2.dart';

现在,你可以在Flutter应用中使用这些自定义组件了。这里是一个如何使用CustomElevatedButton组件的例子:

CustomElevatedButton(
  onPressed: () {
    // 添加你的按钮点击逻辑
  },
  child: CustomText(text:"点击我"),
  color: Colors.blue,
),

请参阅每个组件的文档以获取详细的使用说明和自定义选项。

贡献

欢迎对这个包进行贡献!如果你遇到任何问题或有任何改进建议,请随时在GitHub上提交一个问题或拉取请求。

许可证

该包遵循GNU通用公共许可证


示例代码

下面是使用custom_widgets_2包的一个完整示例:

import 'package:custom_widgets_2/custom_widgets_2.dart';
import 'package:flutter/material.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: false,
      ),
      debugShowCheckedModeBanner: false,
      home: const MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key});

  [@override](/user/override)
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      body: Align(
        alignment: Alignment.bottomCenter,
        child: ContainerShadow(
          width: MediaQuery.of(context).size.width,
          height: MediaQuery.of(context).size.height / 1.1,
          padding: const EdgeInsets.symmetric(horizontal: 10, vertical: 10),
          margin: const EdgeInsets.symmetric(horizontal: 10, vertical: 10),
          child: SingleChildScrollView(
            child: Column(
              children: [
                const CustomText(
                  text: "自定义文本",
                  color: Colors.purple,
                  fontSize: 22,
                ),
                10.sh,
                const CustomTextField(
                  labelText: '自定义文本表单字段',
                  hintText: "提示文本",
                  hintStyle: TextStyle(fontSize: 15),
                  labelAlign: TextAlign.start,
                  labelTextSize: 16,
                  fillColor: Colors.amber,
                  inputBorder: OutlineInputBorder(),
                  enabledBorder: OutlineInputBorder(),
                ),
                10.sh,
                CustomElevatedButton(
                  onPressed: () {
                    ScaffoldMessenger.of(context).showSnackBar(
                      const SnackBar(
                        content: CustomText(
                          text: '自定义提升按钮',
                        ),
                      ),
                    );
                  },
                  color: Colors.green,
                  borderRadius: BorderRadius.circular(3),
                  child: const CustomText(
                    text: "自定义提升按钮",
                    color: Colors.white,
                  ),
                ),
                10.sh,
                const Row(
                  mainAxisAlignment: MainAxisAlignment.spaceAround,
                  children: [
                    Row(
                      mainAxisAlignment: MainAxisAlignment.start,
                      crossAxisAlignment: CrossAxisAlignment.start,
                      children: [
                        CustomDivider(
                          isHor: false,
                          height: 145,
                          thickness: 5,
                        ),
                        RotatedBox(
                            quarterTurns: 1,
                            child: Text('垂直分割线')),
                      ],
                    ),
                    Column(
                      mainAxisAlignment: MainAxisAlignment.start,
                      crossAxisAlignment: CrossAxisAlignment.start,
                      children: [
                        Text('水平分割线'),
                        CustomDivider(
                          thickness: 5,
                          width: 160,
                        ),
                      ],
                    ),
                  ],
                ),
                10.sh,
                CustomDropDownButton(
                  items: const [1, 2, 3],
                  hintText: '选择',
                  newValue: selectValue,
                  onChanged: (value) {
                    setState(() {
                      selectValue = value;
                    });
                  },
                  itemColor: Colors.black,
                  labelColor: Colors.black,
                  labelText: "自定义下拉框",
                  fillColor: Colors.green,
                  inputBorder: const OutlineInputBorder(),
                  enabledBorder: const OutlineInputBorder(),
                ),
                10.sh,
                SizedBox(
                  height: MediaQuery.of(context).size.height / 12.5,
                  child: CustomSteper(
                    size: MediaQuery.of(context).size.width / 10,
                    notActiveColor: Colors.black.withOpacity(.2),
                    activeColor: Colors.green,
                    padding: EdgeInsets.zero,
                    shrinkWrap: false,
                    direction: Axis.horizontal,
                    currentStep: 0,
                    labelText: '自定义步骤指示器',
                    steps: stepOne(0),
                  ),
                ),
                10.sh,
                SizedBox(
                  width: MediaQuery.of(context).size.width,
                  child: const CustomText(
                    text: '自定义网络图片',
                    textAlign: TextAlign.start,
                  ),
                ),
                const CustomCacheNetwork(
                  url: 'https://th.bing.com/th/id/OIG4.LgUj9FIjzUbdTSMn0mRg',
                ),
              ],
            ),
          ),
        ),
      ),
    );
  }

  var selectValue;

  stepOne(int activeStep) => List.generate(
      3,
      (index) => activeStep >= index
          ? const StepWidget()
          : Text((index + 1).toString())).toList();
}

class StepWidget extends StatelessWidget {
  const StepWidget({
    super.key,
  });

  [@override](/user/override)
  Widget build(BuildContext context) {
    return const Icon(
      Icons.check,
      color: Colors.white,
    );
  }
}

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

1 回复

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


当然,作为一个IT专家,我可以为你提供一个关于如何在Flutter项目中自定义组件插件custom_widgets_2的使用示例。假设custom_widgets_2是一个你已经创建或者从某个源获取的插件,并且它包含了一些预定义的自定义组件。以下是一个如何在Flutter项目中导入并使用这个插件的示例代码。

1. 添加依赖

首先,你需要在你的pubspec.yaml文件中添加对custom_widgets_2的依赖。假设这个插件已经发布到了pub.dev上,你可以像这样添加:

dependencies:
  flutter:
    sdk: flutter
  custom_widgets_2: ^1.0.0  # 假设这是插件的版本号

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

2. 导入插件

在你的Dart文件中导入custom_widgets_2插件。例如,在你的main.dart文件中:

import 'package:flutter/material.dart';
import 'package:custom_widgets_2/custom_widgets_2.dart';  // 导入插件

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

3. 使用自定义组件

假设custom_widgets_2插件提供了一个名为MyCustomButton的自定义按钮组件,你可以在你的页面中使用它:

class MyHomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Custom Widgets Demo'),
      ),
      body: Center(
        child: MyCustomButton(
          onPressed: () {
            // 按钮点击事件处理
            ScaffoldMessenger.of(context).showSnackBar(
              SnackBar(content: Text('Button pressed!')),
            );
          },
          label: 'Click Me',
        ),
      ),
    );
  }
}

4. 假设MyCustomButton的定义(插件内部)

虽然你不能直接修改插件内部的代码,但为了完整性,这里展示一下MyCustomButton可能的实现方式,仅作为理解其结构的参考:

// 假设这是custom_widgets_2插件内部的代码
import 'package:flutter/material.dart';

class MyCustomButton extends StatelessWidget {
  final VoidCallback onPressed;
  final String label;

  const MyCustomButton({Key? key, required this.onPressed, required this.label})
      : super(key: key);

  @override
  Widget build(BuildContext context) {
    return ElevatedButton(
      onPressed: onPressed,
      child: Text(label),
      style: ButtonStyle(
        backgroundColor: MaterialStateProperty.all(Colors.blue),
        foregroundColor: MaterialStateProperty.all(Colors.white),
      ),
    );
  }
}

总结

上面的代码展示了如何在Flutter项目中导入并使用一个名为custom_widgets_2的自定义组件插件。你需要在pubspec.yaml中添加依赖,然后在你的Dart文件中导入并使用这些自定义组件。注意,实际的自定义组件和它们的属性可能会有所不同,这里仅提供了一个基本的示例。

回到顶部