Flutter集成CIDS CGI服务插件cids_cgi的使用
Flutter集成CIDS CGI服务插件cids_cgi的使用
CGI设计系统简介
CGI设计系统用于Flutter。
关于项目
“该项目旨在为开发人员带来便利,特别是在需要频繁重复开发的场景中,例如CRUD表格、自定义日期字段等。”
安装
- 在你的应用的
pubspec.yaml
文件中添加以下依赖:cids_cgi: 3.0.0
- 将Google Firebase文件添加到Android和iOS项目中。
- 运行以下命令获取依赖:
flutter pub get
组件
SettingsPage
应用程序设置页面
SettingsPage(
motorista: false,
placa: false,
filled: false,
cpf: false,
appBarColor: Colors.transparent,
appBarTextColor: Colors.white,
);
Props
属性 | 必填? | 类型 | 默认值 |
---|---|---|---|
motorista | 否 | Boolean | false |
placa | 否 | Boolean | false |
filled | 否 | Boolean | false |
cpf | 否 | Boolean | false |
appBarColor | 否 | Color | Colors.transparent |
appBarTextColor | 否 | Color | Colors.transparent |
AuthPage
登录页面
图片
下载并添加以下图片到你的项目中的<projeto>/images/
目录:
-
consultors.png
-
consultors_dark.png
权限
Android
在AndroidManifest.xml
文件中添加以下权限:
<uses-permission android:name="android.permission.USE_FINGERPRINT"/>
iOS
在Info.plist
文件中添加以下键值对:
<key>NSFaceIDUsageDescription</key>
<string>为什么需要使用面部识别?</string>
主文件main.dart
在主文件中添加以下代码:
// main.dart
var defaultPage;
BuildContext biometricsContext;
final biometricsHandler = BiometricsHandler(
autenticacaoPage: () {
Navigator.of(biometricsContext).pushNamed('/auth');
},
homePage: () {
Navigator.of(biometricsContext)
.pushNamedAndRemoveUntil('/home', (Route<dynamic> route) => false);
}
);
void main() async {
biometricsHandler.listen();
biometricsHandler();
await cidsHandler.initialize(
gateway: bool,
loginPorCpfCnpj: bool,
campoMotorista: bool,
aplicativo: "nome_app",
versaoPacific: 1);
}
// 在main.dart的build方法中添加home和路由生成
@override
Widget build(BuildContext context) {
return MaterialApp(
home: defaultPage,
onGenerateRoute: r.Router.generateRoute
);
}
创建page.dart
创建一个名为page.dart
的文件,并添加以下代码:
// page.dart
final biometricsPage = BiometricsErrorPage(
biometricsHandler: biometricsHandler,
context: (context) {
biometricsContext = context;
}
);
final homePage = HomePage(
context: (context) {
biometricsContext = context;
}
);
final authPage = AuthPage(
dropDb: () async {
// 操作保存的数据
},
frase: '公司所有指标',
imagePath: "images/index.jpg",
);
创建constants.dart
创建一个名为constants.dart
的文件,并添加以下代码:
// constants.dart
const String homeRoute = '/home';
const String authRoute = '/auth';
const String indexRoute = '/index';
创建routes.dart
创建一个名为routes.dart
的文件,并添加以下代码:
// routes.dart
class Router {
static Route<dynamic> generateRoute(RouteSettings settings) {
switch (settings.name) {
case authRoute:
return SlideRightRoute(widget: biometricsPage);
case homeRoute:
return SlideRightRoute(widget: homePage);
case indexRoute:
return SlideRightRoute(widget: authPage);
default:
return SlideRightRoute(widget: authPage);
}
}
}
class SlideRightRoute extends PageRouteBuilder {
final Widget widget;
SlideRightRoute({required this.widget})
: super(
pageBuilder: (BuildContext context, Animation<double> animation,
Animation<double> secondaryAnimation) {
return widget;
},
transitionsBuilder: (BuildContext context,
Animation<double> animation,
Animation<double> secondaryAnimation,
Widget child) =>
FadeTransition(opacity: animation, child: child),
transitionDuration: Duration(milliseconds: 500));
}
主页配置
在应用的主页中添加一些额外的配置以获取上下文:
// home.dart 应用程序的主页
class HomePage extends StatefulWidget { // 将主页设为有状态的widget
@override
_HomePageState createState() => _HomePageState();
// 创建一个函数,在加载屏幕时传递上下文
final Function(BuildContext) context;
const HomePage({Key key, @required this.context}) : super(key: key);
}
class _HomePageState extends State<HomePage> with WidgetsBindingObserver {
@override
void initState() {
super.initState();
// 记得传递上下文来创建屏幕,否则生物识别功能将无法正常工作
widget.context(context);
}
}
修改MainActivity.kt
文件
最后,在项目的android
文件夹下的MainActivity.kt
文件中进行必要的修改:
// MainActivity.kt
import io.flutter.embedding.android.FlutterFragmentActivity
class MainActivity: FlutterFragmentActivity() {
}
使用二维码扫描
权限
Android
在AndroidManifest.xml
文件中添加以下权限:
<uses-permission android:name="android.permission.CAMERA" />
iOS
在Info.plist
文件中添加以下键值对:
<key>NSCameraUsageDescription</key>
<string>您的描述</string>
<key>io.flutter.embedded_views_preview</key>
<string>YES</string>
扫描二维码
String response = await QRScan().startScan(context, QRScanType.bar);
print(response);
Handler
SharedPreferences
final handler = SharedPreferencesHandler();
// 获取、保存和移除任何信息
handler.set("chave", "valor");
handler.get("chave");
handler.remove("chave");
handler.clear(); // 清除所有保存的键
handler.setNomeAplicativo("应用名称"); // 设置应用名称以便在网关中显示
handler.setPasswordFirebase("密码"); // 设置Firebase默认密码
handler.setVersaoProgramaPacific(1); // 设置程序版本
handler.setGateway(false); // 设置是否使用网关
handler.permiteAlterarQuantidadeEscaneada(); // 查询是否允许更改库存数量
handler.getVersaoProgramaPacific(); // 查询程序版本
handler.getNumDevicesVendedor(); // 查询设备数量
handler.getPasswordFirebase(); // 查询Firebase登录默认密码
handler.getNomeAplicativo(); // 查询已配置的应用名称
handler.getVersaoMinima(); // 查询Firebase最小版本
handler.getBuildVersion(); // 查询应用构建版本
handler.getNumDevices(); // 查询已分配的设备数量
handler.getMotorista(); // 查询配置中的司机
handler.getGateway(); // 查询是否使用网关
handler.getUsuario(); // 查询用户
handler.getCodigo(); // 查询企业代码
handler.getLogin(); // 查询登录是否通过CNPJ
handler.getSenha(); // 查询密码
handler.getPlaca(); // 查询配置中的车牌号
handler.getToken(); // 查询网关会话令牌
handler.getURL(); // 查询Pacific URL
handler.logout(); // 清除登录数据
handler.isAuth(); // 检查是否已登录
DialogHandler
final handler = DialogHandler();
// 显示带有消息的警告对话框
handler.show(message: "消息要显示给用户", context: context);
// 显示确认对话框
handler.confirm(message: "消息要显示给用户", context: context, textBtn1: "按钮1", textBtn2: "按钮2");
CidsHandler
final handler = CidsHandler()
// 加载在Firebase项目中创建的json配置
// 需要在main.dart文件的main方法中使用
handler.initialize(
gateway: true,
aplicativo: "",
senha: "",
versaoPacific: 2
)
ErrorHandler
try {
Dio dio = new Dio();
Response response = await dio.get("url");
return response?.data ?? [];
} on DioError catch (error) {
final handler = ErrorHandler(error.response.data)
Retorno r = await handler.validaErro();
throw r.mensagem;
} catch (e) {
throw e.toString();
}
更多关于Flutter集成CIDS CGI服务插件cids_cgi的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter集成CIDS CGI服务插件cids_cgi的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是一个关于如何在Flutter项目中集成并使用cids_cgi
插件的示例代码案例。这个插件假设是用于与CIDS CGI服务进行交互的。请注意,由于cids_cgi
并非一个广为人知的官方Flutter插件,以下代码将基于假设的插件API进行编写。如果实际插件的API有所不同,请参照插件的官方文档进行调整。
步骤 1: 添加依赖
首先,在你的pubspec.yaml
文件中添加cids_cgi
插件的依赖。如果这是一个假设的插件,你可能需要替换为实际的插件名称和版本。
dependencies:
flutter:
sdk: flutter
cids_cgi: ^x.y.z # 替换为实际的版本号
然后运行flutter pub get
来安装依赖。
步骤 2: 导入插件
在你的Dart文件中导入cids_cgi
插件。
import 'package:cids_cgi/cids_cgi.dart';
步骤 3: 初始化并使用插件
以下是一个使用cids_cgi
插件进行CGI服务调用的示例代码。假设插件提供了一个CidsCgiClient
类用于与服务进行交互。
import 'package:flutter/material.dart';
import 'package:cids_cgi/cids_cgi.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('CIDS CGI Service Example'),
),
body: Center(
child: CidsCgiExample(),
),
),
);
}
}
class CidsCgiExample extends StatefulWidget {
@override
_CidsCgiExampleState createState() => _CidsCgiExampleState();
}
class _CidsCgiExampleState extends State<CidsCgiExample> {
String _response = '';
@override
void initState() {
super.initState();
_callCidsCgiService();
}
Future<void> _callCidsCgiService() async {
// 假设CidsCgiClient是插件提供的用于与服务交互的类
final CidsCgiClient client = CidsCgiClient();
try {
// 假设这是一个CGI服务的调用方法,参数和返回值需根据实际情况调整
final Map<String, dynamic> result = await client.callService(
methodName: 'exampleMethod',
parameters: {
'param1': 'value1',
'param2': 'value2',
},
);
// 更新UI以显示响应
setState(() {
_response = 'Response: ${result['responseData']}';
});
} catch (e) {
// 处理错误
setState(() {
_response = 'Error: $e';
});
}
}
@override
Widget build(BuildContext context) {
return Text(_response);
}
}
说明
- 依赖管理:通过
pubspec.yaml
文件添加cids_cgi
依赖。 - 导入插件:在Dart文件中导入
cids_cgi
包。 - 使用插件:创建一个
CidsCgiClient
实例,并调用其callService
方法(这里假设的方法名和参数需根据实际情况调整)。 - UI更新:通过
setState
方法更新UI以显示CGI服务的响应或错误信息。
请注意,上述代码是基于假设的API编写的。如果cids_cgi
插件的实际API与此不同,请参照插件的官方文档进行相应的调整。如果插件提供了更多的配置选项或方法,也请根据实际情况进行扩展和使用。