[dart] Dart와 데스크톱 애플리케이션의 컴파일과 배포

Dart에서 데스크톱 애플리케이션을 만드는 방법

Dart는 Flutter를 이용해 안드로이드 및 iOS용 애플리케이션 개발이 가능하지만, 데스크톱 애플리케이션은 Flutter로 지원되지 않습니다. 대신 dart:ffi 라이브러리를 이용하여 C 또는 C++ 코드와 통합함으로써 Win32 API에 접근할 수 있습니다. 따라서, Win32 API를 호출하는 Dart 라이브러리를 만드는 과정이 필요합니다.

import 'dart:ffi';
import 'dart:io';
import 'package:ffi/ffi.dart';

final user32 = DynamicLibrary.open('user32.dll');
final MessageBox = user32.lookupFunction<NativeFunction<Int32 Function(IntPtr, Pointer<Utf16>), int Function(int, Pointer<Utf16>)>>('MessageBoxW');

main() {
  // Call Win32 API function
  var text = Utf16.toUtf16('Hello, Dart!');
  MessageBox(0, text);
  calloc.free(text);
}

Dart 데스크톱 애플리케이션 컴파일과 배포

Dart에서 데스크톱 애플리케이션을 개발했다면, 플랫폼별으로 컴파일 및 배포할 수 있습니다. Windows용 애플리케이션의 경우는 .exe 파일로, macOS용 애플리케이션은 .app 파일로 배포할 수 있습니다. 패키징 및 배포를 위해 desktop-embedding 프로젝트를 이용할 수도 있습니다.

따라서, Dart로 데스크톱 애플리케이션을 개발할 때에는 Win32 API에 접근하는 방법을 이해하고 desktop-embedding 프로젝트를 활용하는 것이 중요합니다.