[flutter] 플러터를 사용하여 디바이스 간 파일 공유 방법

플러터(Flutter)는 모바일 애플리케이션 개발을 위한 인기있는 프레임워크이며, 다양한 플랫폼에서 실행될 수 있는 고성능 UI를 제공합니다. 플러터를 사용하면 Android와 iOS 간에 파일을 공유하는 것도 가능합니다. 이번 글에서는 플러터를 사용하여 디바이스 간 파일을 공유하는 방법에 대해 알아보겠습니다.

1. 파일 공유용 패키지 추가하기

플러터에서 파일 공유를 위해 사용할 패키지를 추가해야 합니다. 이를 위해서 share 패키지를 사용하겠습니다. pubspec.yaml 파일에 다음과 같이 패키지를 추가해주세요:

dependencies:
  flutter:
    sdk: flutter
  share: ^2.0.0

저장한 후에는 터미널에서 flutter packages get 명령어를 실행하여 패키지를 다운로드 받고 프로젝트를 업데이트 해주세요.

2. 파일 공유 기능 구현하기

이제 파일 공유 기능을 구현해보겠습니다. 먼저 파일을 공유하기 위해 사용자가 어떤 파일을 선택할 수 있도록 경로를 얻어야 합니다. 이를 위해 path_provider 패키지를 사용하겠습니다. 먼저 해당 패키지를 pubspec.yaml 파일에 추가해주세요:

dependencies:
  flutter:
    sdk: flutter
  share: ^2.0.0
  path_provider: ^2.0.2

다음으로 main.dart 파일을 열고 아래의 코드를 추가해주세요:

import 'package:flutter/material.dart';
import 'package:share/share.dart';
import 'package:path_provider/path_provider.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'File Sharing',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('File Sharing'),
      ),
      body: Center(
        child: ElevatedButton(
          child: Text('Share File'),
          onPressed: () async {
            final directory = await getApplicationDocumentsDirectory();
            final filePath = '${directory.path}/example.txt';

            // 파일 생성 후 데이터 작성
            final file = File(filePath);
            await file.create();
            await file.writeAsString('Hello, Flutter!');

            // 파일 공유
            await Share.shareFiles([filePath]);
          },
        ),
      ),
    );
  }
}

앱을 실행하고 “Share File” 버튼을 누르면 파일이 생성되고 생성된 파일을 공유할 수 있는 공유 메뉴가 표시됩니다.

결론

플러터를 사용하여 디바이스 간 파일 공유 기능을 구현하는 방법에 대해 알아보았습니다. share 패키지와 path_provider 패키지를 사용하여 파일을 생성하고 공유하는 코드를 작성할 수 있었습니다. 플러터의 다양한 기능을 활용하여 유용한 애플리케이션을 개발하는데 이 글이 도움이 되었기를 바랍니다.