file_selector_harmonyos 0.0.1 copy "file_selector_harmonyos: ^0.0.1" to clipboard
file_selector_harmonyos: ^0.0.1 copied to clipboard

HarmonyOS implementation of the file_selector plugin.

example/lib/main.dart

import 'package:file_selector/file_selector.dart';
import 'package:flutter/material.dart';
void main() {
  runApp(const App());
}

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

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'File Selector',
        home: Scaffold(
            appBar: AppBar(title: const Text('File Selector')),
            body: SingleChildScrollView(child: const HomePage())));
  }
}

class HomePage extends StatefulWidget {
  const HomePage({super.key});

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

class _HomePageState extends State<HomePage> {
  List<XFile> selectedFiles = <XFile>[];

  @override
  Widget build(BuildContext context) {
    return Column(spacing: 12, children: [
      SizedBox(width: double.infinity),
      ElevatedButton(
          onPressed: openTextFile, child: const Text('Open a text file')),
      ElevatedButton(
        onPressed: openImageFile,
        child: const Text('Open an image'),
      ),
      ElevatedButton(
          onPressed: openImageFiles, child: const Text('Open multiple images')),
      const SizedBox(height: 10),
      ...selectedFiles.map((e) => Container(
          margin: EdgeInsets.symmetric(horizontal: 12),
          width: double.infinity,
          child: Text(e.path, maxLines: 4)))
    ]);
  }

  Future<void> openTextFile() async {
    const XTypeGroup typeGroup = XTypeGroup(
      label: 'text',
      extensions: <String>['txt', 'json'],
      uniformTypeIdentifiers: <String>['public.text'],
    );
    final file = await openFile(acceptedTypeGroups: [typeGroup]);
    if (file == null) return;
    selectedFiles = [file];
    setState(() {});
  }

  Future<void> openImageFile() async {
    const XTypeGroup typeGroup = XTypeGroup(
      label: 'images',
      extensions: <String>['jpg', 'png'],
      uniformTypeIdentifiers: <String>['public.image'],
    );
    final file = await openFile(acceptedTypeGroups: <XTypeGroup>[typeGroup]);
    if (file == null) return;
    selectedFiles = [file];
    setState(() {});
  }

  Future<void> openImageFiles() async {
    const XTypeGroup jpgsTypeGroup = XTypeGroup(
      label: 'JPEGs',
      extensions: <String>['jpg', 'jpeg'],
      uniformTypeIdentifiers: <String>['public.jpeg'],
    );
    const XTypeGroup pngTypeGroup = XTypeGroup(
      label: 'PNGs',
      extensions: <String>['png'],
      uniformTypeIdentifiers: <String>['public.png'],
    );
    final files = await openFiles(acceptedTypeGroups: <XTypeGroup>[
      jpgsTypeGroup,
      pngTypeGroup,
    ]);
    if (files.isEmpty) return;
    selectedFiles = files;
    setState(() {});
  }
}
0
likes
140
points
12
downloads

Publisher

unverified uploader

Weekly Downloads

HarmonyOS implementation of the file_selector plugin.

Repository (GitHub)
View/report issues

Documentation

API reference

License

BSD-3-Clause (license)

Dependencies

file_selector_platform_interface, flutter

More

Packages that depend on file_selector_harmonyos

Packages that implement file_selector_harmonyos