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