Flutter DHIS2 UI集成插件dhis2_flutter_ui的使用

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

Flutter DHIS2 UI集成插件dhis2_flutter_ui的使用

关于

DHIS2 Flutter UI 是一个结合了在 DHIS2 中使用的不同 UI 经验的库。它包括不同的表单组件、通用组件和模型,这些组件支持 dhis2 api 数据结构,并 与它们的元数据相关。

项目结构

该项目基于 Flutter 和 Dart 实现。 项目的文件夹结构如下:

|-package | |-lib | |-dhis2_flutter_ui.dart | |-src | |-main_directive.dart | |-ui | |-components | |-core | |-models | |-utils |


#### 支持的组件
以下是一些支持的组件和模型列表:

##### 输入组件
- `SearchInput`
- `RadioInputFieldContainer`
- `BooleanInputFieldContainer`
- `CheckBoxInputField`
- `DateInputFieldContainer`
- `InputClearIcon`
- `NumericalInputFieldContainer`
- `SelectInputField`
- `TextInputFieldContainer`
- `TrueOnlyInputFieldContainer`
- `InputFieldContainer`
- `PercentageInputFieldContainer`
- `TimeInputFieldContainer`
- `FormFieldInputIcon`

##### 通用组件
- `CircularProcessLoader`
- `MaterialCard`
- `LineSeparator`

##### 模型支持
- `Application` (id, label, iconPath, List)
- `InputField` (id, name, translatedName, description, translatedDescription, valueType, labelColor, inputColor, background, renderAsRadio, isReadOnly, isPasswordField, shouldCapitalize, allowFuturePeriod, disablePastPeriod, hasError, minAgeInYear, maxAgeInYear, numberOfMonth, suffixLabel, hint, translatedHint, List)
- `InputFieldOption` (name, translatedName, dynamic code)

##### 工具支持
- `FormValidator` (Validators.pattern('regex','message'))
- `InputMask` (pattern:'xxxx-xxx-xxx',separator:'-')

#### 权限
当在 DHIS2 Flutter UI 库中使用坐标输入字段组件时,确保必要的权限已授予以实现位置相关功能的无缝运行。以下是所需的权限:

##### Android 权限
在 AndroidManifest.xml 文件中添加以下行:
```xml
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
iOS 权限

在 Info.plist 文件中添加以下键:

<key>NSLocationWhenInUseUsageDescription</key>
<string>Your app's's explanation for using location services while in use</string>
<key>NSLocationAlwaysUsageDescription</key>
<string>Your app's's explanation for using location services in the background</string>

开始

这些说明将帮助您在本地机器上克隆并设置项目进行开发和测试。有关如何在生产系统上部署项目的详细信息,请参阅 部署

克隆项目
git clone <github_repository_url>
登录到本地环境(终端)
dart pub login

这将创建一个链接以引导您进入支持的浏览器,然后通过您在 pub.dev 使用过的电子邮件登录。

干燥运行以格式化包

此命令将运行并检查 pub dev 推荐的最佳实践,检查文件结构、pubspec.yaml 文件中的所需内容、包大小和版本控制。

dart pub publish -n

dart pub publish --dry-run
发布包

使用以下命令将包发布到 pub.dev:

dart pub publish

运行测试

解释如何为该系统运行自动化测试。

分解为端到端测试

解释这些测试测试什么以及为什么。

例如:

Give an example
代码风格测试

解释这些测试测试什么以及为什么。

例如:

Give an example

示例代码

import 'package:example/app.dart';
import 'package:flutter/material.dart';

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

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

1 回复

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


当然,下面是一个关于如何在Flutter项目中集成并使用dhis2_flutter_ui插件的示例代码。这个插件可以帮助你快速构建与DHIS2服务器的用户界面集成。

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  dhis2_flutter_ui: ^最新版本号  # 请替换为实际的最新版本号

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

2. 配置DHIS2服务器信息

在你的Flutter项目的入口文件(通常是main.dart)中,配置DHIS2服务器的URL和认证信息。

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

void main() {
  // 配置DHIS2服务器信息
  final dhis2Server = Dhis2Server(
    baseUrl: 'https://你的DHIS2服务器URL',
    username: '你的用户名',
    password: '你的密码',
  );

  runApp(MyApp(dhis2Server: dhis2Server));
}

class MyApp extends StatelessWidget {
  final Dhis2Server dhis2Server;

  MyApp({required this.dhis2Server});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter DHIS2 UI 集成示例',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: Dhis2FlutterUi(
        dhis2Server: dhis2Server,
        onLoginSuccess: (user) {
          // 登录成功后的回调
          print('登录成功: $user');
        },
        onLogoutSuccess: () {
          // 登出成功后的回调
          print('用户已登出');
        },
      ),
    );
  }
}

3. 使用Dhis2FlutterUi组件

上面的代码已经展示了如何使用Dhis2FlutterUi组件。这个组件会处理登录、登出以及与DHIS2服务器的数据交互。

4. 自定义UI(可选)

dhis2_flutter_ui插件提供了基础的UI组件,但你可能需要根据自己的需求进行自定义。例如,你可能希望在登录界面添加自定义的按钮或表单字段。这可以通过包裹Dhis2FlutterUi组件并在其上方或下方添加自定义Widget来实现。

class MyCustomApp extends StatelessWidget {
  final Dhis2Server dhis2Server;

  MyCustomApp({required this.dhis2Server});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter DHIS2 UI 集成示例',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: Scaffold(
        appBar: AppBar(
          title: Text('Flutter DHIS2 UI 集成示例'),
        ),
        body: Padding(
          padding: const EdgeInsets.all(16.0),
          child: Column(
            children: [
              // 自定义Widget,例如一个按钮
              ElevatedButton(
                onPressed: () {
                  // 点击事件处理
                },
                child: Text('自定义按钮'),
              ),
              // Dhis2FlutterUi组件
              Expanded(
                child: Dhis2FlutterUi(
                  dhis2Server: dhis2Server,
                  onLoginSuccess: (user) {
                    print('登录成功: $user');
                  },
                  onLogoutSuccess: () {
                    print('用户已登出');
                  },
                ),
              ),
            ],
          ),
        ),
      ),
    );
  }
}

在这个示例中,MyCustomApp组件在Dhis2FlutterUi组件的上方添加了一个自定义的按钮。你可以根据需要添加更多的自定义Widget。

注意事项

  • 确保你的DHIS2服务器支持所需的API版本,并且你的用户具有访问这些API的权限。
  • 在生产环境中,不要硬编码用户名和密码。考虑使用更安全的方法,如OAuth2或环境变量。
  • 时刻关注dhis2_flutter_ui插件的更新,以便获取最新的功能和修复。

希望这个示例代码能帮助你集成dhis2_flutter_ui插件并构建你的Flutter应用。

回到顶部