Flutter插件fluttersdkplugin的的介绍与用途
在Flutter开发中,插件(plug-in)是一种非常重要的工具,它允许开发者通过扩展现有功能来实现更复杂的应用需求。本文将探讨一个名为fluttersdkplugin
的插件,并展示其可能的用途及其使用示例。
插件简介
fluttersdkplugin
是一个用于与原生代码通信的插件,旨在为Flutter应用提供额外的功能支持。该插件可以帮助开发者实现一些特定的需求,例如推送通知管理、事件跟踪、表单数据捕获等。
用途
以下是一些fluttersdkplugin
可能的潜在用途:
-
推送通知管理
- 添加新通知
- 读取通知
- 删除通知
- 获取未读通知数量
-
事件跟踪
- 跟踪用户行为事件
- 跟踪带有数据的事件(如购买)
-
表单数据捕获
- 捕获用户的表单数据并发送到服务器
-
屏幕跟踪
- 记录用户访问的屏幕
-
深度链接处理
- 处理深度链接以引导用户到特定页面
-
二维码生成与链接
- 生成二维码并链接到指定URL
-
设备注册
- 注册设备信息以便后续使用
示例代码
以下是一个完整的示例代码,展示了如何使用fluttersdkplugin
实现上述功能。
import 'dart:collection';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'dart:async';
import 'dart:convert';
import 'package:flutter/services.dart';
import 'package:fluttersdkplugin/fluttersdkplugin.dart';
import 'package:fluttersdkplugin/fluttersdkplugin_method_channel.dart';
import 'package:fluttersdkplugin_example/poc.dart';
import 'package:fluttersdkplugin_example/screen1.dart';
import 'package:logger/logger.dart';
import 'package:firebase_messaging/firebase_messaging.dart';
import 'package:firebase_core/firebase_core.dart';
import 'package:provider/provider.dart';
import 'Screen2.dart';
import 'bloc.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
runApp(PocApp());
}
class PocApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
DeepLinkBloc _bloc = DeepLinkBloc();
return MaterialApp(
routes: {
'screen1': (BuildContext context) => Screen1(),
'screen2': (BuildContext context) => Screen2()
},
title: 'Flutter and Deep Links PoC',
theme: ThemeData(
primarySwatch: Colors.blue,
textTheme: TextTheme(
subtitle1: TextStyle(
fontWeight: FontWeight.w300,
color: Colors.blue,
fontSize: 25.0,
),
)),
home: Scaffold(
body: Provider<DeepLinkBloc>(
create: (context) => _bloc,
dispose: (context, bloc) => bloc.dispose(),
child: PocWidget())));
}
}
class MyApp extends StatefulWidget {
const MyApp({super.key});
[@override](/user/override)
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
final _fluttersdkpluginPlugin = Fluttersdkplugin();
[@override](/user/override)
void initState() {
super.initState();
initPlatformState();
startTimer();
}
void startTimer() {
Timer.periodic(Duration(seconds: 1), (timer) {
listenForMsg();
});
}
void listenForMsg() {
events.receiveBroadcastStream().listen((dataa) {
setState(() {
data = dataa;
});
if (data != "") {
logger.e("EventChannel :: $data");
}
}, onError: (error) {
print("Error: $error");
});
}
void passLocation() {
double lat = 13.0827;
double lang = 80.2707;
_fluttersdkpluginPlugin.pushLocation(lat, lang);
}
void newNotification() {
var notificationTitle = "Sample Title";
var notificationBody = "Sample Body";
_fluttersdkpluginPlugin.addNewNotification(notificationTitle, notificationBody);
}
void ontrackEvent() {
var content = "On Track Event called!!!";
_fluttersdkpluginPlugin.onTrackEvent(content);
}
void deleteNotificationByCampaignid() {
_fluttersdkpluginPlugin.deleteNotificationByCampaignId("cid");
}
void readnotification() {
_fluttersdkpluginPlugin.readNotification("cid");
}
void unreadNotification() {
_fluttersdkpluginPlugin.unReadNotification("cid");
}
void appconversionTracking() {
_fluttersdkpluginPlugin.appConversionTracking();
}
void formdataCapture() {
Map param = {
"Name": "vishwa",
"EmailID": "abc@gmail.com",
"MobileNo": 9329222922,
"Gender": "Male",
"formid": 101,
"apikey": "api_key_b78db6rb3-9462-4132-a4d3-894db10b3782",
"City": "Chennai"
};
String formData = jsonEncode(param);
_fluttersdkpluginPlugin.formDataCapture(formData);
}
void onTrackEventwithData() {
var data = {
"name": "payment",
"data": {"id": "2d43", "price": "477"}
};
String eventData = jsonEncode(data);
_fluttersdkpluginPlugin.onTrackEventwithData(eventData, "Purchase");
}
void updatepushToken() {
_fluttersdkpluginPlugin.updatePushToken("token");
}
void ondeviceRegister() {
_fluttersdkpluginPlugin.onDeviceUserRegister(
'123',
'vishwa',
'24',
'abc@gmail.com',
'9893839383',
'Male',
"token",
'www.google.com',
'2/8/2005',
'BE',
true,
false,
"At_928jw8");
}
void getdeepLinkData() {
_fluttersdkpluginPlugin.deepLinkData();
}
Future<int?> readnotificationCount() async {
var rnCount = await _fluttersdkpluginPlugin.readNotificationCount();
setState(() {
notificationCount = rnCount!;
});
if (kDebugMode) {
print("readNotificationCount::$rnCount");
}
return null;
}
Future<dynamic> handlePlatformChannelMethods() async {
methodChannel.setMethodCallHandler((methodCall) async {
if (methodCall.method == "androidMethodName") {
print("method call from native code");
if (methodCall.arguments != null) {
print(methodCall.arguments);
}
} else if (methodCall.method == "iosMethodName") {
// Implement iOS-specific logic here
}
});
}
Future<void> initPlatformState() async {
String platformVersion;
try {
platformVersion = await _fluttersdkpluginPlugin.getPlatformVersion() ?? 'Unknown platform version';
} on PlatformException {
platformVersion = 'Failed to get platform version.';
}
if (!mounted) return;
setState(() {
_platformVersion = platformVersion;
});
}
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
home: Scaffold(
resizeToAvoidBottomInset: true,
appBar: AppBar(
title: const Text('Plugin example app'),
),
body: SingleChildScrollView(
child: ConstrainedBox(
constraints: const BoxConstraints(),
child: Container(
child: Column(
children: [
Center(
child: Text('DeepLink ::${DeeplinkData.link.isNotEmpty ? DeeplinkData.link : "No data"}'),
),
SizedBox(
width: double.infinity,
child: ElevatedButton(
onPressed: () {
ondeviceRegister();
},
child: Text("On Device User Register"),
),
),
SizedBox(
width: double.infinity,
child: ElevatedButton(
onPressed: () {
updatepushToken();
},
child: Text("Update Push Token"),
),
),
SizedBox(
width: double.infinity,
child: ElevatedButton(
onPressed: () {
passLocation();
},
child: Text("Update Location"),
),
),
SizedBox(
width: double.infinity,
child: ElevatedButton(
onPressed: () {
newNotification();
},
child: Text("Add New Notification"),
),
),
SizedBox(
width: double.infinity,
child: ElevatedButton(
onPressed: () {
readnotification();
},
child: Text("Read Notification By Id"),
),
),
SizedBox(
width: double.infinity,
child: ElevatedButton(
onPressed: () {
unreadNotification();
},
child: Text("UnRead Notification By Id"),
),
),
SizedBox(
width: double.infinity,
child: ElevatedButton(
onPressed: () async {
var nList = await _fluttersdkpluginPlugin.getNotification();
},
child: Text("Get Notifications"),
),
),
SizedBox(
width: double.infinity,
child: ElevatedButton(
onPressed: () {
readnotificationCount();
},
child: const Text("Read Notification Count"),
),
),
SizedBox(
width: double.infinity,
child: ElevatedButton(
onPressed: () async {
var un_rCount = await _fluttersdkpluginPlugin.unReadNotificationCount();
print("unReadNotificationCount:: $un_rCount");
},
child: const Text("Un_Read_Notification_Count"),
),
),
SizedBox(
width: double.infinity,
child: ElevatedButton(
onPressed: () {
deleteNotificationByCampaignid();
},
child: Text("Delete Notification By CampaignId"),
),
),
SizedBox(
width: double.infinity,
child: ElevatedButton(
onPressed: () {
formdataCapture();
},
child: Text("Form Data Capture"),
),
),
SizedBox(
width: double.infinity,
child: ElevatedButton(
onPressed: () {
ontrackEvent();
},
child: Text("OnTrackEvent"),
),
),
SizedBox(
width: double.infinity,
child: ElevatedButton(
onPressed: () {
onTrackEventwithData();
},
child: const Text("OnTrackEventwithData"),
),
),
SizedBox(
width: double.infinity,
child: ElevatedButton(
onPressed: () {
appconversionTracking();
},
child: Text("App Conversion Tracking"),
),
),
SizedBox(
width: double.infinity,
child: ElevatedButton(
onPressed: () {
getdeepLinkData();
},
child: Text("Get DeepLink Data"),
),
),
SizedBox(
width: double.infinity,
child: ElevatedButton(
onPressed: () {
_fluttersdkpluginPlugin.screentracking("Screen1");
Navigator.push(context,
MaterialPageRoute(builder: (context) => const Screen1()));
},
child: Text("Screen-1"),
),
),
SizedBox(
width: double.infinity,
child: ElevatedButton(
onPressed: () {
_fluttersdkpluginPlugin.screentracking("Screen2");
Navigator.push(context,
MaterialPageRoute(builder: (context) => const Screen2()));
},
child: Text("Screen-2"),
),
),
SizedBox(
width: double.infinity,
child: ElevatedButton(
onPressed: () {
_fluttersdkpluginPlugin.screentracking("Screen3");
},
child: Text("Screen-3"),
),
),
SizedBox(
width: double.infinity,
child: ElevatedButton(
onPressed: () {
_fluttersdkpluginPlugin.qrlink("http://myolaapp.page.link/start");
},
child: Text("QR-Link"),
),
),
SizedBox(
width: double.infinity,
child: ElevatedButton(
onPressed: () {
_fluttersdkpluginPlugin.notificationCTAClicked("c_id12", "a_id34");
},
child: Text("NotificationCTAClicked"),
),
),
],
),
),
),
),
));
}
}