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

패키지 상세v0.2.2

whiteboardkit

그림 도구 상자를 갖춘 멋진 Flutter 화이트보드 구현.

30일 다운로드
29
좋아요
50
Pub 점수
35

패키지 설치

flutter pub add whiteboardkit

패키지 개요

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

WhiteboardKit은 직관적인 그림 도구 상자를 갖춘 완전히 기능하는 화이트보드 구현을 제공하는 플러터 패키지입니다. 펜, 마커, 지우개와 같은 사용자 정의 가능한 도구를 사용하여 캔버스 위에서 그리기, 지우기, 주석 달기 등이 가능합니다. 단순성과 성능을 고려해 설계되었으며, 터치 입력을 지원하고 실시간 스케치 또는 공동 주석이 필요한 앱에 원활하게 통합됩니다. 교육, 디자인, 메모 작성용 애플리케이션에 적합하며 다양한 기기에서 부드럽고 반응성이 뛰어난 그림 경험을 제공합니다.

사용 사례

  • 디지털 스케치
  • 협업 화이트보드
  • 교육 도구
  • 인터랙티브 노트 작성
  • 디자인 프로토타이핑

주요 기능

  • 여러 도구를 갖춘 드로잉 도구 상자
  • 실시간 터치 입력 지원
  • 사용자 정의 가능한 테두리 스타일
  • Flutter와의 간단한 통합
  • 반응형 캔버스 렌더링

적합한 대상

  • Educators
  • Designers
  • 앱 개발자
  • Students
  • 원격 협업 도구

고려 사항

  • 제한된 플랫폼 전용 최적화
  • 내장된 클라우드 동기화 없음
  • 수동 상태 관리가 필요합니다
  • 대규모 캔버스에 최적화되지 않음
  • 기본적으로 되돌리기/다시하기 기록 없음

원본 README

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

whiteboardkit

A Flutter whiteboard widget with so much extendability and flexibility to be used with no need to rewrite your own whiteboard. Enjoy !

Package demo

live demo: https://abdulaziz-mohammed.github.io/whiteboardkit

Usage

import whiteboardkit.dart

import 'package:whiteboardkit/whiteboardkit.dart';

     

Drawing:

Define DrawingController and listen to change event:

  DrawingController controller;

  @override
  void initState() {
    controller = new DrawingController();
    controller.onChange().listen((draw){
      //do something with it
    });
    super.initState();
  }

Place your Whiteboard inside a constrained widget ie. Container,Expanded etc

@override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Expanded(
              child: Whiteboard(
                controller: controller,
              ),
            ),
          ],
        ),
      ),
    );
  }

     

Playback:

Define PlaybackController and supply it with a WhiteboardDraw object:

  PlaybackController controller;

  @override
  void initState() {
    var draw = WhiteboardDraw.fromWhiteboardSVG("<svg...");
    controller = new PlaybackController(draw);
    super.initState();
  }

Place your Whiteboard inside a constrained widget ie. Container,Expanded etc

@override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Expanded(
              child: Whiteboard(
                controller: controller,
              ),
            ),
          ],
        ),
      ),
    );
  }

     

Stream (e.g. online whiteboard):

Define SketchStreamController:

  PlayerController controller;

  @override
  void initState() {
    controller = new SketchStreamController();
    super.initState();
  }

Place your Whiteboard inside a constrained widget ie. Container,Expanded etc

@override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Expanded(
              child: Whiteboard(
                controller: controller,
              ),
            ),
          ],
        ),
      ),
    );
  }

Later, supply it with DrawChunk when recived from DrawingController:

  controller.addChunk(chunk);

You'l need to enable chunks producing in DrawingController then start listening to new chunks:

    controller = new DrawingController(enableChunk: true);
    _chunkSubscription = controller.onChunk().listen((chunk) {
    }

DrawChunk supports:

  • chunk.toJson()
  • DrawChunk.fromJson("...")
    which together can help in transfering chunks through network or any other medium

     

WhiteboardDraw class:

  • Map<String, dynamic> toJson()
  • WhiteboardDraw.fromJson(Map<String, dynamic> json)
  • string getSVG():
    Export to SVG Image format string

카테고리

의존성

의존성 목록 5 개

소스 저장소

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

아직 데이터가 없습니다.