[flutter] cupertino_icons를 이용한 아이콘에 스크린샷 기능 설정하기

이번 포스트에서는 Flutter 앱에서 cupertino_icons 패키지를 사용하여 아이콘에 스크린샷 기능을 설정하는 방법을 알아보겠습니다.

1. cupertino_icons 패키지 추가하기

먼저, pubspec.yaml 파일을 열고 cupertino_icons 패키지를 추가해야 합니다. 아래의 예시를 참고하세요:

dependencies:
  flutter:
    sdk: flutter
  cupertino_icons: ^1.0.3

이후, 터미널에서 flutter pub get 명령을 실행하여 패키지를 다운로드 받습니다.

2. 아이콘에 스크린샷 기능 설정하기

cupertino_icons 패키지를 사용하여 아이콘에 스크린샷 기능을 적용하려면 CupertinoIcons 클래스를 사용해야 합니다.

아래의 코드는 Flutter 앱에서 cupertino_icons 패키지를 사용하여 아이콘에 스크린샷 기능을 설정하는 예시입니다.

import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:path_provider/path_provider.dart';
import 'package:flutter/rendering.dart';
import 'dart:io';

class ScreenshotIcon extends StatelessWidget {
  GlobalKey _globalKey = GlobalKey();

  Future<void> takeScreenshot() async {
    RenderRepaintBoundary boundary = _globalKey.currentContext!.findRenderObject() as RenderRepaintBoundary;
    final image = await boundary.toImage();
    final directory = await getApplicationDocumentsDirectory();
    final imagePath = '${directory.path}/screenshot.png';
    File(imagePath).writeAsBytes(await image.toByteData(format: ImageByteFormat.png) as List<int>);
    print('Screenshot saved to: $imagePath');
  }

  @override
  Widget build(BuildContext context) {
    return RepaintBoundary(
      key: _globalKey,
      child: CupertinoButton(
        onPressed: () {
          takeScreenshot();
        },
        child: Icon(CupertinoIcons.camera),
      ),
    );
  }
}

이 예시에서 ScreenshotIcon 클래스는 스크린샷을 캡처할 아이콘을 나타냅니다. GlobalKey를 사용하여 현재 위젯 트리에서 스크린샷을 캡처할 위젯의 위치를 찾습니다. 그리고 takeScreenshot 함수에서 실제로 스크린샷을 캡처하고 저장하는 작업을 수행합니다.

Flutter 앱에서 이 아이콘을 추가하고 사용하려면, 해당 위젯을 담고 있는 화면에서 ScreenshotIcon 위젯을 렌더링하면 됩니다.

import 'package:flutter/material.dart';
import 'package:your_app/screens/home_screen.dart';

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

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

위의 예시에서는 HomeScreen 클래스가 스크린샷을 캡처할 위젯을 포함하는 화면을 나타내는 예시입니다. 적절한 위치에서 ScreenshotIcon 위젯을 추가하면 스크린샷 아이콘이 화면에 표시됩니다.

이제 Flutter 앱에서 cupertino_icons 패키지를 사용하여 아이콘에 스크린샷 기능을 설정할 수 있습니다.

참고 자료: