sod_taxi 1.0.1 copy "sod_taxi: ^1.0.1" to clipboard
sod_taxi: ^1.0.1 copied to clipboard

Core SDK package for SOD Taxi application

example/lib/main.dart

import 'package:sod_core/sod_core.dart';
import 'package:flutter/material.dart';
import 'package:hive/hive.dart';
import 'package:sod_taxi/sod_taxi.dart';

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

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

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
      ),
      home: const MyHomePage(title: 'SDK & Router Test Page'),
    );
  }
}

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

  final String title;

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

class _MyHomePageState extends State<MyHomePage> {
  bool _isLoading = false;

  Future<void> _handleLoadSdk() async {
    setState(() => _isLoading = true);

    try {
      Hive.init("");
      HiveAdapters.registerAdapters();
      await CoreSDK.setupHostFromNetwork(
        'https://dummyjson.com/c/43bd-b219-4e03-867a',
        "",
      );
      await ParseSDK.setup();
      await CoreSDK.initAppSettings(context);
      await configureDependencies();
      if (!mounted) return;
      ScaffoldMessenger.of(context).showSnackBar(
        const SnackBar(content: Text('CoreSDK loaded successfully!')),
      );
    } catch (e) {
      if (!mounted) return;
      ScaffoldMessenger.of(
        context,
      ).showSnackBar(SnackBar(content: Text('Failed to load SDK: $e')));
    } finally {
      if (mounted) {
        setState(() => _isLoading = false);
      }
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        backgroundColor: Theme.of(context).colorScheme.inversePrimary,
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            ElevatedButton.icon(
              onPressed: _isLoading ? null : _handleLoadSdk,
              icon: _isLoading
                  ? const SizedBox(
                      width: 16,
                      height: 16,
                      child: CircularProgressIndicator(strokeWidth: 2),
                    )
                  : const Icon(Icons.download),
              label: const Text('Load CoreSDK from Host'),
              style: ElevatedButton.styleFrom(
                padding: const EdgeInsets.symmetric(
                  horizontal: 24,
                  vertical: 12,
                ),
              ),
            ),

            const SizedBox(height: 24),

            ElevatedButton.icon(
              onPressed: () async {
                final widget =
                    await RouterService.navigateToDriverLocationPage();
                Navigator.of(
                  context,
                ).push(MaterialPageRoute(builder: (context) => widget));
              },
              icon: const Icon(Icons.local_taxi),
              label: const Text('Navigate to Taxi'),
              style: ElevatedButton.styleFrom(
                padding: const EdgeInsets.symmetric(
                  horizontal: 24,
                  vertical: 12,
                ),
                backgroundColor: Theme.of(
                  context,
                ).colorScheme.secondaryContainer,
              ),
            ),
          ],
        ),
      ),
    );
  }
}