whiteboardkit
一个出色的 Flutter 白板实现,带有绘图工具箱。
一个 Flutter 白板小部件。
以下为英文项目原文快照,最新内容请访问 GitHub。
A Flutter whiteboard widget with so much extendability and flexibility to be used with no need to rewrite your own whiteboard. Enjoy !
live demo: https://abdulaziz-mohammed.github.io/whiteboardkit
import whiteboardkit.dart
import 'package:whiteboardkit/whiteboardkit.dart';
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,
),
),
],
),
),
);
}
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,
),
),
],
),
),
);
}
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("...")
WhiteboardDraw class:Map<String, dynamic> toJson()WhiteboardDraw.fromJson(Map<String, dynamic> json)string getSVG():依赖清单 7 项
{"sdk":"flutter"}^3.0.1^8.4.0^3.3.1^2.4.1^2.2.0{"sdk":"flutter"}先按使用场景筛选,再比较项目活跃情况,最后到原始仓库核对使用要求。
“A repository is the most basic element of GitHub.”
GitHub Docs — About repositories ↗