패키지, 저장소 및 앱 카테고리 검색

패키지 상세v0.1.9

flutterbook

Flutter 위젯 개발을 가속화하는 스토리보드 도구입니다.

AndroidiOSmacOSWindowsLinux
30일 다운로드
235
좋아요
42
Pub 점수
130

패키지 설치

flutter pub add flutterbook

패키지 개요

공개 정보를 바탕으로 생성한 선택 가이드입니다.

FlutterBook은 컴포넌트 기반의 UI 설계를 가능하게 하여 Flutter 위젯 개발을 가속화하는 스토리보드 도구입니다. 개발자와 디자이너가 개별 위젯을 독립적으로 시각화하고 테스트하며 반복할 수 있도록 하며, 여러 플랫폼에서 실시간 미리보기를 제공합니다. 빠른 프로토타이핑을 위해 설계되었으며, 시각적 인터페이스 내에서 동적 구성 및 상태 관리를 지원합니다. 간단한 pub add 명령어를 통해 Flutter 워크플로우에 원활하게 통합되며 오픈소스이므로 커뮤니티 기여를 장려합니다. 일관성 있고 재사용 가능한 UI 컴포넌트에 집중하는 팀에게 이상적입니다.

사용 사례

  • 빠른 UI 프로토타이핑
  • 컴포넌트 라이브러리 개발
  • 크로스 플랫폼 위젯 테스트
  • 디자인 시스템 구현
  • 협업형 UI 리뷰

주요 기능

  • 다중 플랫폼에서 실시간 미리보기
  • 인터랙티브 위젯 구성
  • 다양한 기기 크기 지원
  • 내장 상태 관리
  • 오픈소스 및 확장 가능

적합한 대상

  • Flutter를 사용하는 UI/UX 디자이너
  • 재사용 가능한 컴포넌트를 구축하는 프론트엔드 개발자
  • 디자인 시스템을 사용하는 팀
  • UI 모크업을 반복적으로 개선하는 제품 팀
  • 더 빠른 피드백 루프를 원하는 개발자

고려 사항

  • 기존 Flutter 프로젝트에 통합해야 합니다
  • 위젯 수준의 시각화에 제한
  • Figma처럼 완전한 디자인 도구는 아님
  • 컴포넌트 중심 워크플로우에 가장 적합
  • 복잡한 상태를 위해 추가 설정이 필요할 수 있습니다

원본 README

연결된 소스 저장소의 README 원문 스냅샷입니다. 최신 내용은 저장소에서 확인하세요.

Flutterbook

Flutterbook

A storyboarding tool to accelerate the development of Flutter widgets. Inspired by Storybook.js.

The package is built to support Windows and Web layouts. There is no support for mobile support at the moment. This is new and still under heavy development, expect many changes to occur with usage.

License: MIT


Go subscribe to my YouTube channel to support development.

MOONSDONTBURN Header

Demo

Demo Link Here

Overview ✨

Creating the Main

Start by creating the storyboard widget. This will wrap the Flutterbook widget so that when it is edited, it will hot reload.

class Storyboard extends StatelessWidget {
  const Storyboard({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return FlutterBook(
      categories: [
          // organizers ...
      ],
    );
  }
}

After creating the Storyboard widget, you can run it by using the main. I recommend making another file named main_storyboard.dart to maintain your storyboard.

void main() {
  runApp(const Storyboard());
}
// Or run it directly, but this will cost the hot reload.
// void main() {
//   runApp(const Flutterbook(categories:[...]));
// }
How to add Widgets

To add widgets, you simply put Organizers, aka Category, Folder, Component, and ComponentState.

The hierarchy goes

Category > Folder > Component > ComponentState

but you may also do

Category > Component > ComponentState

or

Category > Folder > Folder > Component > ComponentState

Here is a complex example of a single Category. In the example, we use the builder where we are able to access different controls.

Category(
    categoryName: 'LIBRARY',
    organizers: [
    Folder(
        folderName: 'Charts',
        organizers: [
        Component(
            componentName: 'LineGraph',
            states: [
            ComponentState.child(
                stateName: 'Default Container',
                child: Container(),
            ),
            ],
        ),
        ],
    ),
    Component(
        componentName: 'Button',
        compenentMarkdoown: """##A global button component""",
        states: [
        ComponentState(
            stateName: 'Primary',
            markdown: """Used for the main action to be performed"""
            codeSample:  r'''
Button.primary(
  child: Text('Primary Button'),
  onPressed: () {},
);
'''
            builder: (context, c) {
            return Center(
                child: SizedBox(
                width: c.number(
                    label: 'Number',
                    initial: 50,
                    min: 50,
                    max: 250,
                ),
                height: c.number(
                    label: 'height',
                    initial: 50,
                    min: 50,
                    max: 250,
                    description: 'random stuff',
                ),
                child: CupertinoButton.filled(
                    onPressed: c.boolean(
                    label: 'boolean',
                    initial: true,
                    )
                        ? () {}
                        : null,
                    child: Text(
                    c.text(label: 'Text', initial: 'Hello World'),
                    ),
                ),
                ),
            );
            },
        ),
        ],
    ),
    ],
),
That's it!

Roadmap 🚧

  • [ ] Mobile Support
  • [ ] 100% Code Coverage Testing
  • [X ] Documentation Support in ComponentState's
  • [ ] Better Docs
  • [X ] Device Previews
  • [ ] Shareable Handoffs
  • [ ] Optimization

Contributors 🔥

Your name could be here 😉

카테고리

의존성

의존성 목록 8 개

소스 저장소

이 패키지를 사용하는 프로젝트

아직 데이터가 없습니다.