airship_adapter_flutter 1.0.0 copy "airship_adapter_flutter: ^1.0.0" to clipboard
airship_adapter_flutter: ^1.0.0 copied to clipboard

Flutter bridge for the Gimbal ↔ Airship adapter with location-based event monitoring

example/lib/main.dart

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:airship_adapter_flutter/airship_adapter_flutter.dart';
import 'package:permission_handler/permission_handler.dart';


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

class MyApp extends StatefulWidget {
  const MyApp({super.key});

  @override
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  final List<String> _logs = [];

  @override
  void initState() {
    super.initState();

    // Listen for logs/events from native-adapters
    AirshipAdapterFlutter.events.listen((event) {
      setState(() {
        _logs.insert(0, event.toString()); // newest at top
      });
    });

    _initializePlugin();

  }

  Future<void> _requestPermissions() async {
    var locationWhenInUse = await Permission.locationWhenInUse.request();
    var locationAlways = await Permission.locationAlways.request();

    var bluetoothScan = await Permission.bluetoothScan.request();
    var bluetoothConnect = await Permission.bluetoothConnect.request();

    // Notifications (for Airship push)
    var notification = await Permission.notification.request();
  }

  Future<void> _initializePlugin() async {
    try {
      await _requestPermissions();
      
      
      await AirshipAdapterFlutter.configure(
        airshipAppKey: '<AIRSHIP_APP_KEY>',
        airshipAppSecret: '<AIRSHIP_APP_SECRET>',
        gimbalApiKeyAndroid: '<GIMBAL_API_KEY_ANDROID>',
        gimbalApiKeyIOS: '<GIMBAL_API_KEY_IOS>',
      );

      await AirshipAdapterFlutter.start();
      
    } on PlatformException catch (e) {
      // Handle platform-specific errors
      print("PlatformException: ${e.code} - ${e.message}");
      print("Details: ${e.details}");
      setState(() {
        _logs.insert(0, "ERROR: ${e.code} - ${e.message ?? 'Unknown error'}");
      });
    } on ArgumentError catch (e) {
      // Handle argument validation errors
      print("ArgumentError: ${e.message}");
      setState(() {
        _logs.insert(0, "ERROR: Invalid arguments - ${e.message}");
      });
    } catch (e, stackTrace) {
      // Handle any other errors
      print("Exception: $e");
      print("Stack trace: $stackTrace");
      setState(() {
        _logs.insert(0, "ERROR: $e");
      });
    }
  }

  Color _getEventColor(String log) {
    if (log.toLowerCase().contains("enter")) return Colors.green;
    if (log.toLowerCase().contains("exit")) return Colors.red;
    return Colors.grey.shade800;
  }

  IconData _getEventIcon(String log) {
    if (log.toLowerCase().contains("enter")) return Icons.login;
    if (log.toLowerCase().contains("exit")) return Icons.logout;
    return Icons.info_outline;
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: const Text("Airship + Gimbal Events")),
        body: ListView.builder(
          itemCount: _logs.length,
          itemBuilder: (context, index) {
            final log = _logs[index];
            return ListTile(
              leading: Icon(
                _getEventIcon(log),
                color: _getEventColor(log),
              ),
              title: Text(
                log,
                style: TextStyle(
                  color: _getEventColor(log),
                  fontWeight: FontWeight.w600,
                ),
              ),
            );
          },
        ),
      ),
    );
  }
}
0
likes
160
points
0
downloads

Publisher

unverified uploader

Weekly Downloads

Flutter bridge for the Gimbal ↔ Airship adapter with location-based event monitoring

Repository (GitHub)
View/report issues

Documentation

API reference

License

Apache-2.0 (license)

Dependencies

flutter, plugin_platform_interface

More

Packages that depend on airship_adapter_flutter

Packages that implement airship_adapter_flutter