플러터/Packages
[Package] WidgetBook 설치 및 테스트
sam-ss
2024. 3. 3. 16:30
WidgetBook?
- Flutter에서 사용하는 StoryBook중 하나이다.
- 컴포넌트를 한 곳에 모아 관리할 수 있는 중앙 위젯 라이브러리 제공.
- 컴포넌트 개발 및 테스트에 사용
- 컴포넌트를 독립적으로 개발, 테스트할 수 있도록 도움
- 컴포넌트 라이브러리 구축
- 컴포넌트 라이브러리를 구축하고 문서화(예시와 설명)
- 시각적 회의 및 협업
- 디자이너, 개발자, 제품 관리자 등 팀원들이 시각적으로 컴포넌트를 검토하고 의견을 공유
- Widgetbook Cloud를 사용하면 Figma와 동기화하여 공유 가능.
WidgetBook 사용 방법
설치에 “Generator Approach”와 “Manual Approach”가 있는데 Generator Approach로 하겠습니다.
Install
- 터미널에서 flutter pub add widgetbook_annotation widgetbook 입력 실행
- 그리고 pubspec.yaml 파일에 아래와 같이 추가
dependencies:
widgetbook_annotation: ^3.1.0
widgetbook: ^3.7.0
dev_dependencies:
widgetbook_generator: ^3.7.0
build_runner:
setup
- build_runner 추가 (build_runner 설치 안했을 경우)
- 터미널에 dart pub add dev:build_runner 입력 실행
- 그리고 Widgetbook을 실행할 페이지에 아래 코드 추가(저는 main.dart 사용)
import 'package:widgetbook_annotation/widgetbook_annotation.dart' as widgetbook;
@widgetbook.App()
- 터미널에 flutter pub run build_runner build 입력 실행
- main.directories.g.dart 생성된걸 볼 수 있음
- import 추가 및 Widgetbook.material 코드 추가
// widgetbook.dart
import 'package:flutter/material.dart';
import 'package:widgetbook/widgetbook.dart';
import 'package:widgetbook_annotation/widgetbook_annotation.dart' as widgetbook;
// Import the generated directories variable
import 'main.directories.g.dart'; // add
void main() {
runApp(const WidgetbookApp());
}
@widgetbook.App()
class WidgetbookApp extends StatelessWidget {
const WidgetbookApp({super.key});
@override
Widget build(BuildContext context) {
return Widgetbook.material(
// Use the generated directories variable
directories: directories,
addons: [],
integrations: [
// To make addons & knobs work with Widgetbook Cloud
WidgetbookCloudIntegration(),
],
);
}
}
- 실행 화면
- 웹으로 실행해서 보고 싶으면 flutter run -d chrome -t lib/main.dart
컴포넌트 추가
- custom_card.dart 추가
import 'package:flutter/material.dart';
import 'package:widgetbook_annotation/widgetbook_annotation.dart' as widgetbook;
class CustomCard extends StatelessWidget {
final Widget child;
final Color backgroundColor;
final double borderRadius;
const CustomCard({
required this.child,
this.backgroundColor = Colors.white,
this.borderRadius = 8.0,
super.key,
});
@override
Widget build(BuildContext context) {
return Card(
color: backgroundColor,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(borderRadius),
),
child: child,
);
}
}
@widgetbook.UseCase(
name: 'Default Style',
type: CustomCard,
)
CustomCard defaultCustomCard(BuildContext context) {
return const CustomCard(
child: Text('This is a custom card'),
);
}
@widgetbook.UseCase(
name: 'With Custom Background Color',
type: CustomCard,
)
CustomCard customBackgroundCustomCard(BuildContext context) {
return CustomCard(
backgroundColor: Colors.green.shade100,
child: const Text('This is a custom card with a custom background color'),
);
}
- flutter pub run build_runner build 실행
- main.directories.g.dart 수정된것 확인 가능
- 실행 화면
- @UseCase Type 이름에 따라서 네비게이션 생긴다
- Knobs 수정하면 컴포넌트의 property 수정 할수있다.
자세한 사용법은 https://pub.dev/packages/widgetbook 확인 해주세요.