123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159 |
- import 'package:flutter/material.dart';
- import 'components/white_board/index.dart';
- import 'package:fis_common/event/event_type.dart';
- void main() {
- runApp(const MyApp());
- }
- class MyApp extends StatelessWidget {
- const MyApp({super.key});
- @override
- Widget build(BuildContext context) {
- return MaterialApp(
- title: '白板测试 Demo',
- theme: ThemeData(
- primarySwatch: Colors.blue,
- ),
- home: const WhiteBoardContainer(),
- );
- }
- }
- /// 白板容器,里面带有白板状态控制按钮及其状态
- class WhiteBoardContainer extends StatefulWidget {
- const WhiteBoardContainer({super.key});
- @override
- State<WhiteBoardContainer> createState() => _WhiteBoardContainerState();
- }
- class _WhiteBoardContainerState extends State<WhiteBoardContainer> {
- /// 当前用户 ID
- final currUserId = "123482";
- /// 当前绘制模式
- PaintType paintType = PaintType.curvedLine;
- /// 获取到数据事件通知
- FEventHandler<String> onReceiveDataHandler = FEventHandler<String>();
- /// 获取到清除事件通知
- FEventHandler<String> onClearCanavsHandler = FEventHandler<String>();
- @override
- Widget build(BuildContext context) {
- return Scaffold(
- appBar: AppBar(
- title: const Text('Flutter White Board Demo'),
- ),
- body: Center(
- child: Column(
- children: [
- /// 白板组件入口
- Expanded(
- child: FWhiteBoard(
- initData: MockData.mockCanavsCopy,
- // initData: [],
- userId: currUserId,
- paintType: paintType,
- sendData: (data) {
- debugPrint("'$data',");
- },
- onReceiveData: onReceiveDataHandler,
- onClearCanavs: onClearCanavsHandler,
- patientColor: Colors.blue,
- ),
- ),
- _buildOperationButton(),
- ],
- ),
- ), // This trailing comma makes auto-formatting nicer for build methods.
- );
- }
- /// 操作按钮
- Widget _buildOperationButton() {
- return SizedBox(
- height: 50,
- child: Row(
- mainAxisAlignment: MainAxisAlignment.spaceAround,
- children: [
- TextButton(
- onPressed: () {
- setState(() {
- paintType = PaintType.straightLine;
- });
- },
- child: const Text(
- '直线',
- ),
- ),
- TextButton(
- onPressed: () {
- setState(() {
- paintType = PaintType.curvedLine;
- });
- },
- child: const Text(
- '曲线',
- ),
- ),
- TextButton(
- onPressed: () {
- onClearCanavsHandler.emit(this, currUserId);
- },
- child: const Text(
- '清除',
- ),
- ),
- TextButton(
- onPressed: () {
- onReceiveDataHandler.emit(this, MockData.mockWSNotificationA);
- },
- child: const Text(
- '模拟收到数据A',
- ),
- ),
- TextButton(
- onPressed: () {
- onReceiveDataHandler.emit(this, MockData.mockWSNotificationB);
- },
- child: const Text(
- '模拟收到数据B',
- ),
- ),
- ],
- ),
- );
- }
- }
- class MockData {
- static const String mockWSNotificationA =
- '{"u_Id":"123452","l_Id":"","points":"531829655285299852643030521030845135314951023182502732364995326849193323485533774833339847793442475834524736347447263485"}';
- static const String mockWSNotificationB =
- '{"u_Id":"123452","l_Id":"","points":"1905175319161742192717321959172119811710201316992034169920561699208816882099168821311688216416772185167722071677222816772239167722711677229316772325167723571688237916882422169924431710247617102530173225511732257317422594175326161764263717642648178626591786267017972680180726911818270218402713185127131872271318832713189427231916272319372723195927231970272320022713201327022056269120782659211026482121261621652594217525732197256222192540222925082251248722622454228424432294242223052390231623682327235723272325233823042338228223382271233822282338221723382207233821852338217423382174232721742316217423052174229421742284217422622185225121852240220722292207221922172208223921972260218622712175233621432357214323792143240021322422213224542121248721212519212125512121258321212616212126592121269121212734212127882121283121212885212129492121301421323057214331002154313221653175217531972186320821863208219732192197321922083229222932292240322922623229228432292294321923383219235932082370317524033165242431542424311124573089246830792478303625003003250029712500297124892971247829712457297124353014238130362359308923163154228432082251331522193391219734662175355221653628215436602143375721433843214339502143404721434144214341872143430621434392215444242165452121864596220846182219467222294682224047152262473622734736229447362305473623384736234847362381473624034726244647042468470424894650252246392543461825544543259745102619447826194403264143702652434926524284266242632662425226624241266242412652424126414241263042412597424125764273253243062500436024574435241345322359469323274801231649092305517823055318230554792316561923385802237059532403609324356211246862972489639425226416253264262532"}';
- static const List<String> mockCanavsCopy = [
- '{"u_Id":"123452","l_Id":"","points":"10121970107619481173193712491926135619051453189415611883161518611690185117121851172218401722182917221818"}',
- '{"u_Id":"123452","l_Id":"","points":"1378162313781677137817421378178613781872137819701378204513782154137822401378231613782457137825651378265213672738135628251356290013462955134630191346306313463084134631061346312813463139"}',
- '{"u_Id":"123452","l_Id":"","points":"12922262127023051259232712382392119524351173247811302543111925651098260810762630107626521066265210662662106626521066263010662608"}',
- '{"u_Id":"123452","l_Id":"","points":"143220781464210015072132156121651615220816582251167922621712229417442327176523381765234817762348"}',
- '{"u_Id":"123452","l_Id":"","points":"184117421916173220021721212117102217168823791667251916452626163427341602280915912842159128631580"}',
- '{"u_Id":"123452","l_Id":"","points":"21961494218515152185155821851591217416342174167721741710217417422174179721741861218518942185194821961970219620022196203521962045"}',
- '{"u_Id":"123452","l_Id":"","points":"2497156924971602249716232497166724871699247617322454181824431851243318832422191624111937240019592390198123792013236820242368203523572045234720452347205623472067"}',
- '{"u_Id":"123452","l_Id":"","points":"184122081862222918842273191622941927231619482348197023701981239219812403200224242002244620242457203424892045251120562522206725222067253220672543"}',
- '{"u_Id":"123452","l_Id":"","points":"21532186225021542325214324112121249721102573210026372089268020892713208927342078274520782756207827562089275621102745213227342165271321972680224026592273262623162605234825832370257323922573240325622413255124352551244625512457"}',
- '{"u_Id":"123452","l_Id":"","points":"2153235921742359220723592228235922502359227123592293235923042359232523592336235923472359"}',
- '{"u_Id":"123452","l_Id":"","points":"21962532222825322250253222822532231425322347253223792532240025322411253224222532244325322454253224652532"}',
- '{"u_Id":"123452","l_Id":"","points":"1722287918082868188428571970284621532825227128142390280324872792256227712626276027022749"}',
- '{"u_Id":"123452","l_Id":"","points":"227126522250269522282738219627812153283521312900208829552056300920343030201330741981311719703139195931601959317119593182"}',
- '{"u_Id":"123452","l_Id":"","points":"233629442390296524652998253030302605306326913095278831282863316029173182294932032960320329713203"}',
- '{"u_Id":"123442","l_Id":"","points":"5662267357482662581326525899264160172630610326196189260862542597628625976329258763292576"}',
- '{"u_Id":"123442","l_Id":"","points":"598522085985221959852229598522515985226259852273598522945985231659852327598523385985235959852370598524035985241359852435598524575985246859852500599625225996254359962565599625975996261959962641599626735996269559962727599627605996279259962803599628355996285759962868599628795996291159962922598529555985296559852998598530305985304159853084598530955974313959743149597431825974319359743214597432475974326859633301596333125963333359533366595333875953340959533442595334525942346359423496594235065942352859313561593135715931359359203604592036155920365859203669592036905920370159203712592037345920374559103755591037665910377759103799591038205899384258993853589938645899387458883874588838855888389658883907588839185888393958773939587739505877396158773972587739835867398358563972584539395834391858233896581338745802385358023820578037995780378857703766577037555770374557593745"}',
- '{"u_Id":"123442","l_Id":"","points":"571634425759342057913409582333875867336658993366592033445942333359533333597433235985332359853312600633016017330160283290603932906050327960603268607132686082325860933258609332476103324761033236"}',
- '{"u_Id":"123442","l_Id":"","points":"6340298763402998634030196340304163403063634030956340312863293149632931716319320363193225631932586308327963083312629733446286336662863377628633986286342062863452628634636286347462863485628634966286350662863517628635286286353962973539631935506340356163623561636235716372357163833582639435826405358264163582641635716426356164373550644835286448350664693485648034746480345264913420651233666512335565233333652333236534331265343301653432906534327965343268"}',
- '{"u_Id":"123442","l_Id":"","points":"65772749658827606598277165982803663128576642287966422890665229226663293366632944666329656674297666852987"}',
- '{"u_Id":"123442","l_Id":"","points":"71692413716924467169245771692522716925767169259771472673713726957115276070942792706129007051294470083052698630956943319369213236687833236857337768353409678134856771352867283615670636476685368066523755663137776620381065883864657738856566390765553929654539506545396165453950654539396545390765553896"}',
- '{"u_Id":"123442","l_Id":"","points":"7008320370293236707232907115334471583398722334747266351773203571736336047374362674063658743836807438370174603712746037237470372374703734"}',
- ];
- }
|