Flutter可重用组件插件flutter_reusable_widgets的使用

Flutter可重用组件插件flutter_reusable_widgets的使用

简介

flutter_reusable_widgets 是一个用于简化 Flutter 开发的插件,提供了许多常用的可重用组件、函数和扩展。通过使用这些组件,开发者可以快速构建 UI 并减少重复代码的编写。

以下是一个完整的示例,展示如何在项目中使用 flutter_reusable_widgets 插件。


示例代码

// 导入必要的包
import 'package:flutter/material.dart';
import 'package:flutter_reusable_widgets/flutter_reusable_widgets.dart'; // 引入插件

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

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

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      title: 'Flutter Reusable Widgets Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: const MyHomePage(),
    );
  }
}

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

  @override
  Widget build(BuildContext context) {
    return CommonSafeArea( // 使用 SafeArea 组件确保内容不会被刘海屏遮挡
      child: Scaffold(
        appBar: AppBar(
          title: const Text('Reusable Widgets'), // 设置应用栏标题
        ),
        body: Padding(
          padding: const EdgeInsets.all(16.0), // 设置内边距
          child: Wrap(
            spacing: 10, // 控制子组件之间的水平间距
            runSpacing: 10, // 控制子组件之间的垂直间距
            children: [
              // 使用 CommonButton 创建按钮
              CommonButton(
                onSubmit: () {
                  // 跳转到另一个页面
                  pagePusher(
                    context,
                    const CommonButtonExample(), // 目标页面
                  );
                },
                child: const Text('按钮示例'), // 按钮文字
              ),
              // 使用 CommonButton 创建日期时间选择器示例
              CommonButton(
                onSubmit: () {
                  pagePusher(
                    context,
                    const DateTimePickerExample(), // 目标页面
                  );
                },
                child: const Text('日期时间选择器示例'), // 按钮文字
              ),
            ],
          ),
        ),
      ),
    );
  }
}

代码说明

  1. 导入插件

    import 'package:flutter_reusable_widgets/flutter_reusable_widgets.dart';
    

    这行代码引入了 flutter_reusable_widgets 插件,使我们能够使用其中的可重用组件。

  2. CommonSafeArea

    CommonSafeArea(
      child: Scaffold(
        ...
      ),
    )
    

    CommonSafeArea 是一个封装好的 SafeArea 组件,确保页面内容不会被设备的刘海屏或状态栏遮挡。

  3. CommonButton

    CommonButton(
      onSubmit: () {
        pagePusher(context, const CommonButtonExample());
      },
      child: const Text('按钮示例'),
    )
    

    CommonButton 是一个封装好的按钮组件,支持点击事件并自动处理页面跳转逻辑(通过 pagePusher 函数)。

  4. DateTimePickerExample

    CommonButton(
      onSubmit: () {
        pagePusher(context, const DateTimePickerExample());
      },
      child: const Text('日期时间选择器示例'),
    )
    

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

1 回复

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


flutter_reusable_widgets 是一个 Flutter 插件,旨在帮助开发者创建和管理可重用的 UI 组件。通过使用这个插件,你可以将常用的 UI 元素封装为可重用的组件,从而减少代码重复,提高开发效率。

安装插件

首先,你需要在 pubspec.yaml 文件中添加 flutter_reusable_widgets 插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  flutter_reusable_widgets: ^1.0.0  # 请使用最新版本

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

使用 flutter_reusable_widgets

1. 创建可重用组件

你可以使用 ReusableWidget 类来创建可重用的组件。以下是一个简单的例子:

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

class MyReusableButton extends ReusableWidget {
  final String text;
  final VoidCallback onPressed;

  MyReusableButton({required this.text, required this.onPressed});

  [@override](/user/override)
  Widget build(BuildContext context) {
    return ElevatedButton(
      onPressed: onPressed,
      child: Text(text),
    );
  }
}

2. 使用可重用组件

在你的应用程序中,你可以像使用普通 Widget 一样使用这个可重用组件:

import 'package:flutter/material.dart';
import 'package:flutter_reusable_widgets/flutter_reusable_widgets.dart';
import 'my_reusable_button.dart'; // 假设你把它放在这个文件里

class MyHomePage extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Reusable Widgets Example'),
      ),
      body: Center(
        child: MyReusableButton(
          text: 'Click Me',
          onPressed: () {
            print('Button Pressed!');
          },
        ),
      ),
    );
  }
}

3. 使用插件提供的其他功能

flutter_reusable_widgets 插件可能还提供了其他功能,例如:

  • ReusableContainer: 一个可重用的容器组件,允许你自定义样式和布局。
  • ReusableText: 一个可重用的文本组件,允许你自定义字体、颜色等。
  • ReusableImage: 一个可重用的图片组件,允许你自定义图片源、大小等。

你可以查看插件的文档或源代码来了解更多功能。

示例代码

以下是一个完整的示例,展示了如何使用 flutter_reusable_widgets 插件创建和使用可重用组件:

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

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

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

class MyHomePage extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Reusable Widgets Demo'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            MyReusableButton(
              text: 'Button 1',
              onPressed: () {
                print('Button 1 Pressed!');
              },
            ),
            SizedBox(height: 20),
            MyReusableButton(
              text: 'Button 2',
              onPressed: () {
                print('Button 2 Pressed!');
              },
            ),
          ],
        ),
      ),
    );
  }
}

class MyReusableButton extends ReusableWidget {
  final String text;
  final VoidCallback onPressed;

  MyReusableButton({required this.text, required this.onPressed});

  [@override](/user/override)
  Widget build(BuildContext context) {
    return ElevatedButton(
      onPressed: onPressed,
      child: Text(text),
    );
  }
}
回到顶部