IDevViewer

Flutter Web용 iDev 템플릿 뷰어 패키지 (읽기 전용 모드)

🚀 빠른 시작

설치

# pubspec.yaml
dependencies:
  idev_viewer:
    path: ../IdevViewer

기본 사용

import 'package:idev_viewer/idev_viewer.dart';

IDevViewer(
  config: IDevConfig(
    templateName: 'my_template',
  ),
  onReady: () {
    print('Viewer is ready!');
  },
)

템플릿 업데이트

class MyPage extends StatefulWidget {
  @override
  _MyPageState createState() => _MyPageState();
}

class _MyPageState extends State<MyPage> {
  IDevConfig _config = IDevConfig(
    templateName: 'initial',
    template: null,
  );

  void _updateTemplate() {
    setState(() {
      _config = IDevConfig(
        templateName: 'updated',
        template: [
          // 템플릿 데이터
        ],
      );
    });
  }

  @override
  Widget build(BuildContext context) {
    return IDevViewer(config: _config);
  }
}

📚 문서

상세한 가이드는 VIEWER_INTEGRATION_GUIDE.md를 참고하세요.

주요 내용

  • ✅ 아키텍처 설명
  • ✅ 설치 및 설정
  • ✅ 템플릿 업데이트 방법
  • ✅ 트러블슈팅
  • ✅ 기술 세부사항

🔧 주요 기능

  • 읽기 전용 모드: 템플릿을 안전하게 표시
  • 동적 업데이트: 런타임에 템플릿 변경 가능
  • iframe 격리: 메인 앱과 독립적인 실행 환경
  • Hot Restart 지원: 개발 중 안정적인 동작
  • 커스터마이징: 로딩 화면 및 에러 처리 커스터마이징 가능

🐛 트러블슈팅

일반적인 문제

"Container not found" 에러

  • 자동으로 재시도하며, 대부분 자동 해결됩니다

템플릿이 2번 호출됨

  • 이미 해결됨 - 중복 체크 로직 적용

404 에러

  • pubspec.yaml에 assets 등록 확인:
    flutter:
      assets:
        - assets/viewer-app/
    

더 많은 트러블슈팅 정보는 가이드 문서를 참고하세요.

📂 프로젝트 구조

IdevViewer/
├── lib/
│   ├── idev_viewer.dart           # Public API
│   └── src/
│       ├── models/                # 데이터 모델
│       └── platform/              # 플랫폼별 구현
│           └── viewer_web.dart    # Web 구현
├── assets/
│   └── idev-app/                  # iDev Flutter 앱 (idev-viewer.js 포함)
├── example/                       # 예제 앱
├── VIEWER_INTEGRATION_GUIDE.md    # 상세 가이드
└── README.md                      # 이 파일

🎯 사용 사례

1. 템플릿 갤러리

ListView.builder(
  itemCount: templates.length,
  itemBuilder: (context, index) {
    return Card(
      child: SizedBox(
        height: 400,
        child: IDevViewer(
          config: IDevConfig(
            templateName: templates[index].name,
            template: templates[index].data,
          ),
        ),
      ),
    );
  },
)

2. 템플릿 미리보기

Dialog(
  child: SizedBox(
    width: 800,
    height: 600,
    child: IDevViewer(
      config: IDevConfig(
        templateName: 'preview',
        template: selectedTemplate,
      ),
      loadingWidget: Center(
        child: CircularProgressIndicator(),
      ),
    ),
  ),
)

🔄 업데이트 히스토리

v1.0.0 (2025-10-26)

  • ✅ 초기 릴리즈
  • ✅ 읽기 전용 뷰어 모드 구현
  • ✅ 동적 템플릿 업데이트
  • ✅ Hot Restart 지원
  • ✅ 중복 템플릿 호출 방지

📝 라이센스

이 프로젝트는 iDev 프로젝트의 일부입니다.

🤝 기여

이슈 및 PR은 언제나 환영합니다!


더 자세한 정보: VIEWER_INTEGRATION_GUIDE.md

Libraries

idev_viewer