geolite_flutter_sdk 0.0.2 copy "geolite_flutter_sdk: ^0.0.2" to clipboard
geolite_flutter_sdk: ^0.0.2 copied to clipboard

Flutter package for Geolite SDK integrating native Android and iOS implementations

example/lib/main.dart

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

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

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Geolite SDK Demo',
      theme: ThemeData(primarySwatch: Colors.blue),
      home: const MyHomePage(title: 'Geolite SDK Demo'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({Key? key, required this.title}) : super(key: key);

  final String title;

  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  final TextEditingController _apiKeyController = TextEditingController();
  final TextEditingController _cipherKeyController = TextEditingController();
  final TextEditingController _userIdController = TextEditingController();

  String _sdkStatus = 'Not initialized';
  bool _isTracking = false;

  Future<void> _requestLocationPermission() async {
    try {
      final result = await GeoliteFlutterSdk.requestLocationPermission();
      setState(() {
        _sdkStatus =
            result
                ? 'Location permission granted'
                : 'Location permission denied';
      });
    } catch (e) {
      setState(() {
        _sdkStatus = 'Error requesting permission: $e';
      });
    }
  }

  Future<void> _initializeSDK() async {
    if (_apiKeyController.text.isEmpty ||
        _cipherKeyController.text.isEmpty ||
        _userIdController.text.isEmpty) {
      setState(() {
        _sdkStatus = 'Error: All fields are required';
      });
      return;
    }

    try {
      final result = await GeoliteFlutterSdk.initialiseSDK(
        _apiKeyController.text,
        _cipherKeyController.text,
        _userIdController.text,
      );

      setState(() {
        if (result['success'] == true) {
          _sdkStatus = 'SDK initialized successfully';
          _isTracking = true; // SDK starts tracking on initialization
        } else {
          _sdkStatus = 'SDK initialization failed: ${result['errormessage']}';
        }
      });
    } catch (e) {
      setState(() {
        _sdkStatus = 'Error: $e';
      });
    }
  }

  Future<void> _stopTracking() async {
    try {
      final result = await GeoliteFlutterSdk.stopTracking();

      setState(() {
        if (result['success'] == true) {
          _isTracking = false;
          _sdkStatus = 'Tracking stopped successfully';
        } else {
          _sdkStatus = 'Failed to stop tracking: ${result['errormessage']}';
        }
      });
    } catch (e) {
      setState(() {
        _sdkStatus = 'Error: $e';
      });
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text(widget.title)),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: SingleChildScrollView(
          child: Column(
            crossAxisAlignment: CrossAxisAlignment.stretch,
            children: <Widget>[
              TextField(
                controller: _apiKeyController,
                decoration: const InputDecoration(
                  border: OutlineInputBorder(),
                  labelText: 'API Key',
                  hintText: 'Enter your Geolite SDK API Key',
                ),
              ),
              const SizedBox(height: 10),
              TextField(
                controller: _cipherKeyController,
                decoration: const InputDecoration(
                  border: OutlineInputBorder(),
                  labelText: 'Cipher Key',
                  hintText: 'Enter your Geolite SDK Cipher Key',
                ),
              ),
              const SizedBox(height: 10),
              TextField(
                controller: _userIdController,
                decoration: const InputDecoration(
                  border: OutlineInputBorder(),
                  labelText: 'User ID',
                  hintText: 'Enter your User ID',
                ),
              ),
              const SizedBox(height: 20),
              ElevatedButton(
                onPressed: _requestLocationPermission,
                child: const Text('Request Location Permission'),
              ),
              const SizedBox(height: 10),
              ElevatedButton(
                onPressed: _initializeSDK,
                child: const Text('Initialize SDK'),
              ),
              const SizedBox(height: 10),
              ElevatedButton(
                onPressed: _isTracking ? _stopTracking : null,
                style: ElevatedButton.styleFrom(
                  backgroundColor: _isTracking ? Colors.red : Colors.grey,
                ),
                child: const Text('Stop Tracking'),
              ),
              const SizedBox(height: 20),
              Container(
                padding: const EdgeInsets.all(10),
                decoration: BoxDecoration(
                  color: Colors.grey[200],
                  borderRadius: BorderRadius.circular(5),
                ),
                child: Text(
                  'Status: $_sdkStatus',
                  style: Theme.of(context).textTheme.bodyLarge,
                ),
              ),
            ],
          ),
        ),
      ),
    );
  }

  @override
  void dispose() {
    _apiKeyController.dispose();
    _cipherKeyController.dispose();
    _userIdController.dispose();
    super.dispose();
  }
}
0
likes
155
points
18
downloads

Publisher

unverified uploader

Weekly Downloads

Flutter package for Geolite SDK integrating native Android and iOS implementations

Homepage
Repository (GitHub)

Documentation

API reference

License

MIT (license)

Dependencies

ffi, flutter, plugin_platform_interface

More

Packages that depend on geolite_flutter_sdk

Packages that implement geolite_flutter_sdk