saveeye_flutter_sdk 1.0.3 copy "saveeye_flutter_sdk: ^1.0.3" to clipboard
saveeye_flutter_sdk: ^1.0.3 copied to clipboard

A Flutter SDK for integrating with SaveEye's device management platform. Provides GraphQL-based access to device data, monitoring, and management features.

example/lib/main.dart

import 'package:flutter/material.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:saveeye_flutter_sdk/saveeye_flutter_sdk.dart';
import 'package:firebase_core/firebase_core.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'screens/auth_screen.dart';
import 'screens/device_list_screen.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();

  // Initialize Firebase with error handling
  bool firebaseInitialized = false;
  try {
    // Check if Firebase is already initialized
    if (Firebase.apps.isEmpty) {
      await Firebase.initializeApp();
    }
    firebaseInitialized = true;
  } catch (e) {
    // Firebase initialization failed
    firebaseInitialized = false;
  }

  // Initialize SaveEye SDK (aligned with React Native SDK API)
  String? deviceLocale;
  try {
    final locale = WidgetsBinding.instance.platformDispatcher.locale;
    deviceLocale = locale.countryCode != null &&
            locale.countryCode!.isNotEmpty
        ? '${locale.languageCode}-${locale.countryCode}'
        : locale.languageCode;
  } catch (_) {
    deviceLocale = null;
  }

  try {
    print('Initializing SaveEye SDK');
    SaveEyeClient.instance.initialize(
      'CNrlw0s0ckK0KjrbwHMDkz6Jo0V3a8BJrCuEOaQn7qM=', // Replace with your actual SDK key
      () async {
        final token = await FirebaseAuth.instance.currentUser?.getIdToken();
        if (token == null) {
          throw Exception(
            'Failed to retrieve JWT token. User may not be authenticated.',
          );
        }
        return token;
      },
      environment: SaveEyeEnvironment.prod,
      locale: deviceLocale,
      debug: true,
      onError: (error, extra) {
        // Forward SDK errors to your logging or Sentry
        print('SaveEye SDK error: $error');
        if (extra != null && extra.isNotEmpty) {
          print('  extra: $extra');
        }
      },
    );
  } catch (e) {
    print('SaveEye SDK initialization failed: $e');
  }

  runApp(MyApp(firebaseInitialized: firebaseInitialized));
}

class MyApp extends StatelessWidget {
  final bool firebaseInitialized;

  const MyApp({super.key, required this.firebaseInitialized});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'SaveEye SDK Example',
      theme: ThemeData(primarySwatch: Colors.blue, useMaterial3: true),
      home: AuthWrapper(firebaseInitialized: firebaseInitialized),
    );
  }
}

class AuthWrapper extends HookWidget {
  final bool firebaseInitialized;

  const AuthWrapper({super.key, required this.firebaseInitialized});

  @override
  Widget build(BuildContext context) {
    return StreamBuilder(
      stream: FirebaseAuth.instance.authStateChanges(),
      builder: (context, snapshot) {
        switch (snapshot.connectionState) {
          case ConnectionState.none:
          case ConnectionState.waiting:
            return const Scaffold(
              body: Center(child: CircularProgressIndicator()),
            );
          case ConnectionState.active:
          case ConnectionState.done:
            if (snapshot.hasData && snapshot.data != null) {
              return const DeviceListScreen();
            }
            return const AuthScreen();
        }
      },
    );
  }
}

// AuthScreen and DeviceListScreen moved to screens/ directory
0
likes
150
points
508
downloads

Documentation

Documentation
API reference

Publisher

unverified uploader

Weekly Downloads

A Flutter SDK for integrating with SaveEye's device management platform. Provides GraphQL-based access to device data, monitoring, and management features.

Repository (GitHub)

License

MIT (license)

Dependencies

flutter, flutter_hooks, gql, graphql, graphql_flutter, meta, saveeye_provisioning, web_socket_channel

More

Packages that depend on saveeye_flutter_sdk