shyun_link 2.1.0 copy "shyun_link: ^2.1.0" to clipboard
shyun_link: ^2.1.0 copied to clipboard

A comprehensive deeplink and short URL management system with ultra-simple ShyunLinkManager API. Built with Clean Architecture principles, supports strategy patterns, dependency injection, and enterpr [...]

shyun_link #

딥링크, 숏링크, 인앱 내비게이션을 통합 관리하는 강력한 플러터 플러그인입니다. 클린 아키텍처 원칙에 따라 설계되어, 복잡한 링크 처리 로직을 단순하고 명확하게 관리할 수 있습니다.

pub version license

주요 기능 #

  • 통합 링크 처리: 딥링크, 일반 URL, 단축 URL을 일관된 방식으로 처리합니다.
  • 클린 아키텍처: Domain, Application, Infrastructure 계층으로 분리되어 유지보수와 확장이 용이합니다.
  • 단축 URL 생성: 외부 API와 연동하여 동적으로 단축 URL을 생성합니다.
  • 커스텀 라우팅: 앱 내 특정 페이지로 이동하는 라우팅 로직을 손쉽게 정의하고 관리할 수 있습니다.
  • 의존성 주입(DI): get_it을 사용한 DI 컨테이너를 통해 필요한 서비스와 저장소를 관리합니다.
  • 테스트 용이성: 메모리 기반의 Mock Repository를 제공하여, 네트워크 연결 없이도 비즈니스 로직을 테스트할 수 있습니다.

시작하기 #

설치 #

pubspec.yaml 파일에 다음 의존성을 추가하세요:

dependencies:
  shyun_link: ^2.0.0

그리고 터미널에서 flutter pub get을 실행하세요.

초기화 #

앱의 main 함수에서 플러그인을 초기화해야 합니다. 이 과정에서 필요한 모든 서비스와 저장소가 DI 컨테이너에 등록됩니다.

// main.dart
import 'package:flutter/material.dart';
import 'package:shyun_link/shyun_link.dart';

void main() async {
  // Flutter 엔진과 위젯 바인딩 초기화
  WidgetsFlutterBinding.ensureInitialized();

  // shyun_link 시스템 초기화
  // useHttpRepository: true로 설정하면 실제 API와 연동합니다.
  await SystemInitializer.initialize(useHttpRepository: true);

  runApp(const MyApp());
}

사용 방법 #

초기화 후, DI 컨테이너에서 DeepLinkFacade를 가져와 모든 기능을 사용할 수 있습니다.

딥링크 처리 #

앱으로 들어오는 딥링크 URL을 처리하여 적절한 페이지로 라우팅합니다.

import 'package:shyun_link/shyun_link.dart';

// DI 컨테이너에서 Facade 인스턴스 가져오기
final deepLinkFacade = DeepLinkContainer.instance.get<DeepLinkFacade>();

// 처리할 URL (예: from uni_links or other deep link library)
final Uri uri = Uri.parse("https://your-domain.com/path?id=123");

// 딥링크 처리 실행
final result = await deepLinkFacade.processDeepLink(uri);

result.when(
  success: (route) {
    // 성공 시, 반환된 NavigationRouteEntity를 사용하여 페이지 이동
    print("Navigating to ${route.path} with arguments: ${route.arguments}");
    // 예: Navigator.pushNamed(context, route.path, arguments: route.arguments);
  },
  failure: (error) {
    // 실패 시, 에러 처리
    print("Deep link processing failed: $error");
  },
);

단축 URL 생성 #

긴 URL을 백엔드 API를 통해 짧은 URL로 변환합니다.

// 생성할 원본 URL
const originalUrl = "https://your-long-url.com/some/very/long/path?with=params";

// 단축 링크 생성 요청
final result = await deepLinkFacade.createShortLink(originalUrl);

result.when(
  success: (shortLink) {
    // 성공 시, 생성된 ShortLinkEntity 정보 사용
    print("Short link created: ${shortLink.shortUrl}");
  },
  failure: (error) {
    // 실패 시, 에러 처리
    print("Failed to create short link: $error");
  },
);

아키텍처 #

shyun_link는 클린 아키텍처를 따르며, 각 계층은 다음과 같은 역할을 수행합니다.

  • Domain: 핵심 비즈니스 로직과 데이터 모델(Entities), 그리고 인터페이스(Repositories)를 포함합니다. 외부 의존성이 없는 순수한 Dart 코드로 작성됩니다.
  • Application: 유스케이스(UseCases), 팩토리(Factories), 퍼사드(Facade)를 통해 앱의 기능을 조합하고 실행 흐름을 관리합니다.
  • Infrastructure: 외부 세계와의 통신을 담당합니다. API 클라이언트(HTTP Repositories), 로컬 데이터베이스, 플랫폼 서비스 등이 여기에 해당합니다.
  • Configuration: 의존성 주입(DI) 설정과 시스템 초기화를 담당합니다.

이러한 구조는 각 부분의 역할을 명확히 하고, 코드의 결합도를 낮춰 테스트와 유지보수를 용이하게 만듭니다.

예제 #

더 자세한 사용법과 전체 실행 코드는 example/ 디렉토리에서 확인하실 수 있습니다.

기여하기 #

버그 리포트, 기능 제안 등 모든 종류의 기여를 환영합니다. 이슈를 생성하거나 Pull Request를 보내주세요.

라이선스 #

이 프로젝트는 MIT 라이선스를 따릅니다. 자세한 내용은 LICENSE 파일을 참고하세요.

3
likes
0
points
668
downloads

Publisher

unverified uploader

Weekly Downloads

A comprehensive deeplink and short URL management system with ultra-simple ShyunLinkManager API. Built with Clean Architecture principles, supports strategy patterns, dependency injection, and enterprise-grade error handling.

Repository (GitHub)
View/report issues

Topics

#deeplink #url #shortlink #navigation

License

unknown (license)

Dependencies

dio, flutter, logger, share_plus, url_launcher

More

Packages that depend on shyun_link