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

A Flutter utility package to easily detect device platforms, form factors (mobile, tablet, TV, desktop, web), and inspect platform-specific device info.

example/example.dart

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

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

  // Initialize device info caching
  // Comment / uncomment debugTvMode to simulate TV environment during testing:
  await Device.ensureInitialized(
      // debugTvMode: true,
      );

  runApp(const DeviceKitExampleApp());
}

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

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Device Kit Demo',
      theme: ThemeData(
        useMaterial3: true,
        colorSchemeSeed: Colors.indigo,
      ),
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Flutter Device Kit Demo'),
          centerTitle: true,
        ),
        body: ListView(
          padding: const EdgeInsets.all(16.0),
          children: [
            _buildSectionHeader('Platform Type Enum'),
            _buildInfoCard([
              _buildRow('Device.value', '${Device.value}'),
              _buildRow('PlatformType.values', '${PlatformType.values}'),
            ]),
            const SizedBox(height: 16),
            _buildSectionHeader('Form Factors'),
            _buildInfoCard([
              _buildRow('Device.isMobile', '${Device.isMobile}'),
              _buildRow('Device.isTablet', '${Device.isTablet}'),
              _buildRow('Device.isTv', '${Device.isTv}'),
              _buildRow('Device.isDesktop', '${Device.isDesktop}'),
              _buildRow('Device.isDesktopOrWeb', '${Device.isDesktopOrWeb}'),
            ]),
            const SizedBox(height: 16),
            _buildSectionHeader('Operating System Flags'),
            _buildInfoCard([
              _buildRow('Device.isAndroid', '${Device.isAndroid}'),
              _buildRow('Device.isIOS', '${Device.isIOS}'),
              _buildRow('Device.isWeb', '${Device.isWeb}'),
              _buildRow('Device.isMacOS', '${Device.isMacOS}'),
              _buildRow('Device.isWindows', '${Device.isWindows}'),
              _buildRow('Device.isLinux', '${Device.isLinux}'),
              _buildRow('Device.isFuchsia', '${Device.isFuchsia}'),
            ]),
            const SizedBox(height: 16),
            _buildSectionHeader('Dimension Breakpoints'),
            _buildInfoCard([
              _buildRow('mobileWidth', '$mobileWidth px'),
              _buildRow('tabletWidth', '$tabletWidth px'),
            ]),
            const SizedBox(height: 16),
            _buildSectionHeader('Platform Metadata (device_info_plus)'),
            _buildInfoCard([
              _buildRow('Device.deviceInfo', '${Device.deviceInfo?.data}'),
              _buildRow('Device.androidInfo', _formatAndroidInfo()),
              _buildRow('Device.iosInfo', _formatIosInfo()),
              _buildRow('Device.webInfo', _formatWebInfo()),
              _buildRow('Device.macOsInfo', _formatMacOsInfo()),
              _buildRow('Device.windowsInfo', _formatWindowsInfo()),
              _buildRow('Device.linuxInfo', _formatLinuxInfo()),
            ]),
          ],
        ),
      ),
    );
  }

  static Widget _buildSectionHeader(String title) {
    return Padding(
      padding: const EdgeInsets.only(bottom: 8.0, left: 4.0),
      child: Text(
        title,
        style: const TextStyle(fontSize: 18, fontWeight: FontWeight.bold),
      ),
    );
  }

  static Widget _buildInfoCard(List<Widget> children) {
    return Card(
      elevation: 2,
      child: Padding(
        padding: const EdgeInsets.symmetric(vertical: 8.0, horizontal: 16.0),
        child: Column(children: children),
      ),
    );
  }

  static Widget _buildRow(String label, String value) {
    return Padding(
      padding: const EdgeInsets.symmetric(vertical: 6.0),
      child: Row(
        mainAxisAlignment: MainAxisAlignment.spaceBetween,
        children: [
          Text(label, style: const TextStyle(fontWeight: FontWeight.w600)),
          const SizedBox(width: 8),
          Flexible(
            child: Text(
              value,
              textAlign: TextAlign.end,
              style: const TextStyle(color: Colors.grey),
            ),
          ),
        ],
      ),
    );
  }

  static String _formatAndroidInfo() {
    final info = Device.androidInfo;
    if (info == null) return 'null (Not Android)';
    return '${info.manufacturer} ${info.model} (Android ${info.version.release})';
  }

  static String _formatIosInfo() {
    final info = Device.iosInfo;
    if (info == null) return 'null (Not iOS)';
    return '${info.name} (${info.systemName} ${info.systemVersion})';
  }

  static String _formatWebInfo() {
    final info = Device.webInfo;
    if (info == null) return 'null (Not Web)';
    return '${info.browserName.name} (${info.platform})';
  }

  static String _formatMacOsInfo() {
    final info = Device.macOsInfo;
    if (info == null) return 'null (Not macOS)';
    return '${info.computerName} (${info.osRelease})';
  }

  static String _formatWindowsInfo() {
    final info = Device.windowsInfo;
    if (info == null) return 'null (Not Windows)';
    return '${info.computerName} (Build ${info.buildNumber})';
  }

  static String _formatLinuxInfo() {
    final info = Device.linuxInfo;
    if (info == null) return 'null (Not Linux)';
    return '${info.name} ${info.versionId}';
  }
}
0
likes
150
points
151
downloads

Documentation

API reference

Publisher

verified publisherabhishekmraj.me

Weekly Downloads

A Flutter utility package to easily detect device platforms, form factors (mobile, tablet, TV, desktop, web), and inspect platform-specific device info.

Repository (GitHub)
View/report issues

Topics

#device-info #cross-platform #flutter #utilities

License

MIT (license)

Dependencies

device_info_plus, flutter, universal_platform

More

Packages that depend on flutter_device_kit