Flutter插件fluttersdkplugin的的介绍与用途

在Flutter开发中,插件(plug-in)是一种非常重要的工具,它允许开发者通过扩展现有功能来实现更复杂的应用需求。本文将探讨一个名为fluttersdkplugin的插件,并展示其可能的用途及其使用示例。

插件简介

fluttersdkplugin是一个用于与原生代码通信的插件,旨在为Flutter应用提供额外的功能支持。该插件可以帮助开发者实现一些特定的需求,例如推送通知管理、事件跟踪、表单数据捕获等。

用途

以下是一些fluttersdkplugin可能的潜在用途:

  1. 推送通知管理

    • 添加新通知
    • 读取通知
    • 删除通知
    • 获取未读通知数量
  2. 事件跟踪

    • 跟踪用户行为事件
    • 跟踪带有数据的事件(如购买)
  3. 表单数据捕获

    • 捕获用户的表单数据并发送到服务器
  4. 屏幕跟踪

    • 记录用户访问的屏幕
  5. 深度链接处理

    • 处理深度链接以引导用户到特定页面
  6. 二维码生成与链接

    • 生成二维码并链接到指定URL
  7. 设备注册

    • 注册设备信息以便后续使用

示例代码

以下是一个完整的示例代码,展示了如何使用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"),
                      ),
                    ),
                  ],
                ),
              ),
            ),
          ),
        ));
  }
}
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!