パッケージ、リポジトリ、アプリカテゴリを検索

パッケージ詳細v0.2.2

whiteboardkit

描画ツールボックスを備えた素晴らしいFlutterホワイトボードの実装。

30日間ダウンロード
29
いいね数
50
Pub ポイント
35

パッケージをインストール

flutter pub add whiteboardkit

パッケージ概要

公開情報に基づく選定ガイドです。参考としてご利用ください。

WhiteboardKit は、直感的な描画ツールボックスを備えた完全に機能するホワイトボード実装を提供するFlutterパッケージです。ペン、マーカー、消しゴムなどのカスタマイズ可能なツールを使用して、キャンバス上で描画、消去、注釈を実行できます。シンプルさとパフォーマンスを重視して設計されており、タッチ入力をサポートし、リアルタイムのスケッチや共同注釈が必要なアプリにシームレスに統合できます。教育、デザイン、ノートテイキング用途に最適で、さまざまなデバイスで滑らかで応答性の高い描画体験を提供します。

用途

  • デジタルスケッチ
  • 共同作業ホワイトボード
  • 教育ツール
  • インタラクティブなノート作成
  • デザインプロトタイピング

主な機能

  • 複数のツールを備えた描画ツールボックス
  • リアルタイムタッチ入力サポート
  • カスタマイズ可能なストロークスタイル
  • 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 件

ソースリポジトリ

このパッケージを使用しているプロジェクト

データはまだありません。