disk_kit_macos_extensions 0.1.0 copy "disk_kit_macos_extensions: ^0.1.0" to clipboard
disk_kit_macos_extensions: ^0.1.0 copied to clipboard

PlatformmacOS

Optional macOS filesystem tools and volume access inspection for DiskKit.

example/lib/main.dart

import 'package:disk_kit/disk_kit.dart';
import 'package:disk_kit_macos_extensions/disk_kit_macos_extensions.dart';
import 'package:flutter/material.dart';

void main() => runApp(const MaterialApp(home: ExtensionsExample()));

/// Shows optional tools and volume access without changing any disk contents.
class ExtensionsExample extends StatefulWidget {
  const ExtensionsExample({super.key});

  @override
  State<ExtensionsExample> createState() => _ExtensionsExampleState();
}

class _ExtensionsExampleState extends State<ExtensionsExample> {
  final _extensions = const DiskKitMacosExtensions();
  late Future<List<Widget>> _snapshot;

  @override
  void initState() {
    super.initState();
    _snapshot = _load();
  }

  Future<List<Widget>> _load() async {
    final capabilities = await _extensions.getCapabilities();
    final disks = await const DiskKit().getDisks();
    final rows = <Widget>[
      const Padding(
        padding: EdgeInsets.all(16),
        child: Text('Read-only example. No disk is formatted. '
            'Formatter availability does not imply filesystem read/write support.'),
      ),
      ...capabilities.map((capability) => ListTile(
            title: Text('${capability.fileSystem.name}: '
                'formatting ${capability.formatting.name}'),
            subtitle: Text('${capability.toolPath ?? capability.reason}\n'
                'Read/write: inspect a mounted volume below'),
          )),
      const Divider(),
    ];
    for (final volume in disks.where(
        (disk) => disk.isInternal == false && disk.isWholeDisk == false)) {
      final access = await _extensions.getVolumeAccess(volume.id);
      rows.add(ListTile(
        title: Text(
            '${volume.id} · ${volume.volumeName ?? volume.name ?? 'Volume'}'),
        subtitle: Text('${access.mountPath ?? 'Unmounted'}\n'
            'Root readable: ${access.canRead ?? 'unknown'} · '
            'Root writable: ${access.canWrite ?? 'unknown'}'),
      ));
    }
    return rows;
  }

  @override
  Widget build(BuildContext context) => Scaffold(
        appBar: AppBar(
          title: const Text('DiskKit optional extensions'),
          actions: [
            IconButton(
              tooltip: 'Refresh tools and volumes',
              onPressed: () => setState(() => _snapshot = _load()),
              icon: const Icon(Icons.refresh),
            ),
          ],
        ),
        body: FutureBuilder<List<Widget>>(
          future: _snapshot,
          builder: (context, snapshot) {
            if (snapshot.hasError) {
              return Center(child: SelectableText('${snapshot.error}'));
            }
            if (!snapshot.hasData) {
              return const Center(child: CircularProgressIndicator());
            }
            return ListView(children: snapshot.data!);
          },
        ),
      );
}
0
likes
160
points
133
downloads

Documentation

API reference

Publisher

verified publisherdarkfox.pl

Weekly Downloads

Optional macOS filesystem tools and volume access inspection for DiskKit.

Homepage
Repository (GitHub)
View/report issues

License

MIT (license)

Dependencies

disk_kit, flutter

More

Packages that depend on disk_kit_macos_extensions

Packages that implement disk_kit_macos_extensions