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

Unified API layer for Flutter apps across Mobile, Web, and Desktop. Smart bundling, SEO optimization, and native integration.

example/lib/main.dart

import 'package:flutter/material.dart';
import 'package:flutter_unify/flutter_unify.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: 'Flutter Unify Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
        useMaterial3: true,
      ),
      home: const HomePage(),
    );
  }
}

class HomePage extends StatefulWidget {
  const HomePage({Key? key}) : super(key: key);

  @override
  State<HomePage> createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
  String _systemInfo = 'Loading...';
  bool _isUnifyInitialized = false;

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

  Future<void> _initializeUnify() async {
    try {
      // Initialize Flutter Unify
      await Unify.initialize();

      // Get system information
      final info = Unify.getRuntimeInfo();

      setState(() {
        _isUnifyInitialized = true;
        _systemInfo = '''
Platform: ${info['platform']}
Is Web: ${info['isWeb']}
Is Desktop: ${info['isDesktop']}  
Is Mobile: ${info['isMobile']}
Initialized: ${info['isInitialized']}
        ''';
      });
    } catch (e) {
      setState(() {
        _systemInfo = 'Error initializing Unify: $e';
      });
    }
  }

  Future<void> _testClipboard() async {
    if (!_isUnifyInitialized) return;

    try {
      // Test clipboard operations
      await Unify.system.clipboardWriteText('Hello from Flutter Unify!');

      final clipboardText = await Unify.system.clipboardReadText();

      if (mounted) {
        ScaffoldMessenger.of(context).showSnackBar(
          SnackBar(
            content: Text('Clipboard: $clipboardText'),
          ),
        );
      }
    } catch (e) {
      if (mounted) {
        ScaffoldMessenger.of(context).showSnackBar(
          SnackBar(
            content: Text('Clipboard error: $e'),
            backgroundColor: Colors.red,
          ),
        );
      }
    }
  }

  Future<void> _testNotification() async {
    if (!_isUnifyInitialized) return;

    try {
      // Test notification
      await Unify.system.showNotification(
        title: 'Flutter Unify Test',
        body: 'This is a test notification from Flutter Unify!',
      );
    } catch (e) {
      if (mounted) {
        ScaffoldMessenger.of(context).showSnackBar(
          SnackBar(
            content: Text('Notification error: $e'),
            backgroundColor: Colors.red,
          ),
        );
      }
    }
  }

  void _onFilesDropped(List<String> files) {
    if (mounted) {
      ScaffoldMessenger.of(context).showSnackBar(
        SnackBar(
          content: Text('Files dropped: ${files.join(', ')}'),
        ),
      );
    }
  }

  @override
  Widget build(BuildContext context) {
    return UnifiedScaffold(
      appBar: AppBar(
        title: const Text('Flutter Unify Demo'),
        backgroundColor: Theme.of(context).colorScheme.inversePrimary,
      ),
      enableDragAndDrop: true,
      onFilesDropped: _onFilesDropped,
      showDesktopWindowControls: true,
      windowTitle: 'Flutter Unify Demo',
      enableWebOptimizations: true,
      body: ResponsiveLayout(
        mobile: _buildMobileLayout(),
        tablet: _buildTabletLayout(),
        desktop: _buildDesktopLayout(),
      ),
    );
  }

  Widget _buildMobileLayout() {
    return _buildCommonLayout(isMobile: true);
  }

  Widget _buildTabletLayout() {
    return _buildCommonLayout(isMobile: false);
  }

  Widget _buildDesktopLayout() {
    return _buildCommonLayout(isMobile: false);
  }

  Widget _buildCommonLayout({required bool isMobile}) {
    return Padding(
      padding: EdgeInsets.all(isMobile ? 16.0 : 24.0),
      child: Column(
        crossAxisAlignment: CrossAxisAlignment.start,
        children: [
          SEOWidget(
            title: 'Flutter Unify Demo',
            description:
                'A demonstration of Flutter Unify - unified API for Mobile, Web, and Desktop',
            keywords: 'flutter, unify, cross-platform, mobile, web, desktop',
            child: const SizedBox.shrink(),
          ),
          const SEOHeading.h1('Flutter Unify Demo'),
          const SizedBox(height: 16),
          const SEOParagraph(
            text:
                'Flutter Unify provides one unified layer for Flutter apps across Mobile, Web, and Desktop platforms.',
          ),
          const SizedBox(height: 24),

          // System Information Card
          Card(
            child: Padding(
              padding: const EdgeInsets.all(16.0),
              child: Column(
                crossAxisAlignment: CrossAxisAlignment.start,
                children: [
                  const Text(
                    'System Information',
                    style: TextStyle(
                      fontSize: 18,
                      fontWeight: FontWeight.bold,
                    ),
                  ),
                  const SizedBox(height: 8),
                  Text(
                    _systemInfo,
                    style: const TextStyle(fontFamily: 'monospace'),
                  ),
                ],
              ),
            ),
          ),

          const SizedBox(height: 24),

          // Action Buttons
          Wrap(
            spacing: 16,
            runSpacing: 16,
            children: [
              ElevatedButton.icon(
                onPressed: _isUnifyInitialized ? _testClipboard : null,
                icon: const Icon(Icons.content_copy),
                label: const Text('Test Clipboard'),
              ),
              ElevatedButton.icon(
                onPressed: _isUnifyInitialized ? _testNotification : null,
                icon: const Icon(Icons.notifications),
                label: const Text('Test Notification'),
              ),
            ],
          ),

          const SizedBox(height: 24),

          // Platform-Specific Features
          PlatformBuilder(
            builder: (context, platform) {
              return Card(
                child: Padding(
                  padding: const EdgeInsets.all(16.0),
                  child: Column(
                    crossAxisAlignment: CrossAxisAlignment.start,
                    children: [
                      const Text(
                        'Platform-Specific Features',
                        style: TextStyle(
                          fontSize: 18,
                          fontWeight: FontWeight.bold,
                        ),
                      ),
                      const SizedBox(height: 8),
                      if (platform.isDesktop) ...[
                        const Text('✓ System Tray Support'),
                        const Text('✓ Window Management'),
                        const Text('✓ Global Shortcuts'),
                        const Text('✓ Drag & Drop Files'),
                      ],
                      if (platform.isWeb) ...[
                        const Text('✓ SEO Optimization'),
                        const Text('✓ Progressive Loading'),
                        const Text('✓ Web Polyfills'),
                        const Text('✓ Smart Bundling'),
                      ],
                      if (platform.isMobile) ...[
                        const Text('✓ Native Bridge'),
                        const Text('✓ Device Information'),
                        const Text('✓ Mobile Services'),
                        const Text('✓ Biometric Authentication'),
                      ],
                      const SizedBox(height: 8),
                      Text(
                        'Screen Size: ${platform.screenSize.width.toInt()} x ${platform.screenSize.height.toInt()}',
                        style:
                            const TextStyle(fontSize: 12, color: Colors.grey),
                      ),
                    ],
                  ),
                ),
              );
            },
          ),

          const SizedBox(height: 24),

          // Drop Zone
          if (PlatformDetector.isDesktop)
            DropTarget(
              onDropFiles: _onFilesDropped,
              highlightOnDragOver: true,
              child: Container(
                width: double.infinity,
                height: 100,
                decoration: BoxDecoration(
                  border: Border.all(
                    color: Colors.grey,
                    style: BorderStyle.solid,
                    width: 2,
                  ),
                  borderRadius: BorderRadius.circular(8),
                ),
                child: const Center(
                  child: Text(
                    'Drop files here (Desktop only)',
                    style: TextStyle(
                      fontSize: 16,
                      color: Colors.grey,
                    ),
                  ),
                ),
              ),
            ),
        ],
      ),
    );
  }

  @override
  void dispose() {
    Unify.dispose();
    super.dispose();
  }
}
1
likes
0
points
317
downloads

Publisher

unverified uploader

Weekly Downloads

Unified API layer for Flutter apps across Mobile, Web, and Desktop. Smart bundling, SEO optimization, and native integration.

Repository (GitHub)
View/report issues

Topics

#flutter #cross-platform #web #desktop #mobile

License

unknown (license)

Dependencies

ffi, flutter, meta, path, web

More

Packages that depend on flutter_unify

Packages that implement flutter_unify