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

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


liquidsoft_components

—目前在测试阶段—

liquidsoft_components 是一个轻量但功能齐全的组件包,旨在帮助您的 Flutter 项目快速启动。它提供了 HTTP 调用器、全局错误处理、大量实用方法,以及基于设备平台的动态 Cupertino/Material 小部件。

支持的平台:iOS、Android、Web、macOS 和其他所有 Flutter 平台。

以下图片展示了主要小部件之一 LiquidScaffold 的效果:

LiquidScaffold 示例

LiquidScaffold 示例

文档:完整的文档可以在我们的网站上找到 - https://liquidsoft.io/flutter-components/


特性

HTTP 调用器与错误处理

  • 支持 GET、POST、DELETE、PATCH 请求
  • 超时检测(在初始化时设置超时时间)
    • 如果连接到网络但无互联网访问,则抛出连接错误
    • 其他情况抛出标准错误
  • 返回状态码和错误对话框
  • 在调试模式下抛出错误并打印响应体
// 初始化 HTTP 调用器
LiquidHTTPCaller _httpCaller = LiquidHTTPCaller();

// 示例:GET 请求
Future<List<Accounts>> getAccounts() async {
  var url = 'https://someAPI.com/accountsModel/';
  var data = await _httpCaller.getData(url);
  var obj = accountsFromJson(data);
  return obj;
}

// 示例:POST 请求
createUserLog(userId, platform, logInDate) async {
  var url = 'https://someAPI.com/userLogModel/';
  await _httpCaller.postData(url, {
    "userId": userId,
    "platform": platform,
    "loginDate": logInDate,
  });
}

// 示例:PATCH 请求
updateUserReview(String reviewStatus) async {
  var url = 'https://someAPI.com/userModel/updateUserReview';

  var data = await _httpCaller.postData(url, {
    "userId": userId,
    "userReviewStatus": reviewStatus,
  });
}

// 示例:DELETE 请求
void deleteIncome(Income income) async {
  var url = 'https://someAPI.com/incomeModel/' + income.incomeId.toString();
  var data = await _httpCaller.deleteData(url);
}

全局错误处理

  • 调试模式下将错误打印到控制台
  • 生产模式下捕获错误并显示对话框或发送电子邮件
// 使用 catchError 方法捕获错误
LiquidSoftService _liquidService = LiquidSoftService();

try {
  // 模拟错误
  throw Exception("模拟错误");
} catch (e) {
  _liquidService.catchError(e.toString());
}

获取平台类型或组

  • 分组:web、mobile、desktop 或 unknown
  • 类型:Web、iOS、Android、MacOS、Fuchsia、Linux、Windows 或 Unknown
  • 结构化设计以避免 Web 平台报错
LiquidSoftService _liquidService = LiquidSoftService();

// 获取分组
_liquidService.getPlatformGroup == PlatformGroup.web;

// 获取类型
_liquidService.getPlatformType == PlatformType.iOS;

Hex 转换

  • 将十六进制颜色代码转换为 Color 对象
ThemeData light = ThemeData(
  brightness: Brightness.light,
  primaryColor: HexColor('#FFCD38'),
  primaryColorDark: HexColor('#AE7849'),
  primaryColorLight: Colors.black12,
);

美元格式化

  • 将数字轻松格式化为美元字符串
  • 示例:534223.45 => $534,223.45
LiquidSoftService _liquidService = LiquidSoftService();

Text(
  '${_liquidService.getDollarFormat(235223.00)}',
  style: TextStyle(fontSize: 16),
);
// 输出:$234,223.00

数字格式化

  • 格式化数字
  • 可选的格式和本地化输入
  • 默认格式:"###.0#"
  • 默认本地化:“en_US”
  • 示例:123.9847736274 => 123.98
LiquidSoftService _liquidService = LiquidSoftService();

Text(
  '${_liquidService.numberFormat(123.132232323)}',
  style: TextStyle(fontSize: 16),
);
// 输出:123.13

页面路由

  • 根据平台选择 Material 或 Cupertino 页面路由
  • Web 默认为 Material
LiquidSoftService _liquidService = LiquidSoftService();

_liquidService.routePage(context, TheNewScreenToRouteToo());

SnackBar

  • 从应用程序的任何位置轻松调用 SnackBar
LiquidSoftService _liquidService = LiquidSoftService();

_liquidService.showSnackBar(context, '刷新交易完成');

Getting Started

添加依赖

pubspec.yaml 文件中添加 liquidsoft_components

dependencies:
  liquidsoft_components: ^1.0.0

导入组件

main.dart 文件中导入所需的组件:

import 'package:liquidsoft_components/liquid_components.dart';

// 或者单独导入每个小部件或服务
import 'package:liquidsoft_components/services/liquidServices.dart';
import 'package:liquidsoft_components/services/platformInfo.dart';
import 'package:liquidsoft_components/widgets/liquidApproveDialog.dart';
import 'package:liquidsoft_components/widgets/liquidButton.dart';
import 'package:liquidsoft_components/widgets/liquidDate.dart';
import 'package:liquidsoft_components/widgets/liquidDropdown.dart';
import 'package:liquidsoft_components/widgets/liquidHeader.dart';
import 'package:liquidsoft_components/widgets/liquidLogo.dart';
import 'package:liquidsoft_components/widgets/liquidMultiText.dart';
import 'package:liquidsoft_components/widgets/liquidScaffold.dart';
import 'package:liquidsoft_components/widgets/liquidSecondaryAppBar.dart';
import 'package:liquidsoft_components/widgets/liquidSmallButton.dart';
import 'package:liquidsoft_components/widgets/liquidSpinner.dart';
import 'package:liquidsoft_components/widgets/liquidText.dart';
import 'package:liquidsoft_components/widgets/liquidToggleBar.dart';

初始化组件

在主函数中初始化 LiquidSoftComponents

void main() {
  bool isDebug = false;
  assert(isDebug = true);

  /// 初始化组件、错误处理和 HTTP 调用器
  LiquidSoftComponents(
    rootWidget: ExampleApp(),
    httpHeaders: {
      "Access-Control-Allow-Origin": '*',
      "accept": "application/json",
      "content-type": "application/json",
    },
    errorAdminEmail: 'chris@liquidsoft.io',
    isDebug: isDebug,
    logoLocationLight: 'assets/lightLogo.png',
    logoLocationDark: 'assets/darkLogo.png',
  );
}
1 回复

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


liquidsoft_components 是一个 Flutter 自定义组件插件,提供了一系列可重用的 UI 组件,帮助开发者快速构建美观且功能丰富的应用。以下是如何使用 liquidsoft_components 插件的基本步骤:

1. 添加依赖

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

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

然后运行 flutter pub get 来获取依赖。

2. 导入包

在你的 Dart 文件中导入 liquidsoft_components 包:

import 'package:liquidsoft_components/liquidsoft_components.dart';

3. 使用组件

liquidsoft_components 提供了多种自定义组件,以下是一些常见组件的使用示例:

3.1 按钮组件

LiquidButton(
  onPressed: () {
    // 按钮点击事件
  },
  child: Text('点击我'),
);

3.2 输入框组件

LiquidTextField(
  hintText: '请输入内容',
  onChanged: (value) {
    // 输入内容变化时的回调
  },
);

3.3 卡片组件

LiquidCard(
  child: Column(
    children: [
      Text('卡片标题'),
      Text('卡片内容'),
    ],
  ),
);

3.4 加载指示器

LiquidLoader(
  size: 50.0,
  color: Colors.blue,
);

3.5 对话框组件

LiquidDialog(
  title: Text('提示'),
  content: Text('这是一个对话框'),
  actions: [
    LiquidButton(
      onPressed: () {
        // 关闭对话框
        Navigator.of(context).pop();
      },
      child: Text('确定'),
    ),
  ],
);

4. 自定义组件样式

liquidsoft_components 允许你通过传递参数来自定义组件的外观和行为。例如,你可以更改按钮的颜色、大小、形状等:

LiquidButton(
  onPressed: () {
    // 按钮点击事件
  },
  color: Colors.red,
  borderRadius: 10.0,
  child: Text('自定义按钮'),
);

5. 处理事件

大多数组件都提供了事件回调,例如按钮的 onPressed、输入框的 onChanged 等。你可以通过这些回调来处理用户的交互。

LiquidButton(
  onPressed: () {
    // 处理按钮点击事件
    print('按钮被点击了');
  },
  child: Text('点击我'),
);

6. 响应式设计

liquidsoft_components 组件通常设计为响应式的,能够适应不同的屏幕尺寸和设备方向。你可以通过调整组件的参数来进一步优化布局。

7. 更多组件和功能

liquidsoft_components 可能还提供了其他组件和功能,建议查阅官方文档或插件的源代码以获取更多详细信息。

8. 示例代码

以下是一个完整的示例代码,展示了如何使用 liquidsoft_components 中的几个组件:

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

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('LiquidSoft Components 示例'),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              LiquidButton(
                onPressed: () {
                  print('按钮被点击了');
                },
                child: Text('点击我'),
              ),
              SizedBox(height: 20),
              LiquidTextField(
                hintText: '请输入内容',
                onChanged: (value) {
                  print('输入内容: $value');
                },
              ),
              SizedBox(height: 20),
              LiquidCard(
                child: Padding(
                  padding: EdgeInsets.all(16.0),
                  child: Text('这是一个卡片组件'),
                ),
              ),
            ],
          ),
        ),
      ),
    );
  }
}
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!