geolite_flutter_sdk 0.0.1 copy "geolite_flutter_sdk: ^0.0.1" to clipboard
geolite_flutter_sdk: ^0.0.1 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
0
points
18
downloads

Publisher

unverified uploader

Weekly Downloads

Flutter package for Geolite SDK integrating native Android and iOS implementations

Homepage
Repository (GitHub)
View/report issues

License

unknown (license)

Dependencies

ffi, flutter, plugin_platform_interface

More

Packages that depend on geolite_flutter_sdk

Packages that implement geolite_flutter_sdk