main.dart 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. import 'package:flutter/material.dart';
  2. import 'components/white_board/index.dart';
  3. import 'package:fis_common/event/event_type.dart';
  4. void main() {
  5. runApp(const MyApp());
  6. }
  7. class MyApp extends StatelessWidget {
  8. const MyApp({super.key});
  9. @override
  10. Widget build(BuildContext context) {
  11. return MaterialApp(
  12. title: '白板测试 Demo',
  13. theme: ThemeData(
  14. primarySwatch: Colors.blue,
  15. ),
  16. home: const WhiteBoardContainer(),
  17. );
  18. }
  19. }
  20. /// 白板容器,里面带有白板状态控制按钮及其状态
  21. class WhiteBoardContainer extends StatefulWidget {
  22. const WhiteBoardContainer({super.key});
  23. @override
  24. State<WhiteBoardContainer> createState() => _WhiteBoardContainerState();
  25. }
  26. class _WhiteBoardContainerState extends State<WhiteBoardContainer> {
  27. /// 当前用户 ID
  28. final currUserId = "123482";
  29. /// 当前绘制模式
  30. PaintType paintType = PaintType.curvedLine;
  31. /// 获取到数据事件通知
  32. FEventHandler<String> onReceiveDataHandler = FEventHandler<String>();
  33. /// 获取到清除事件通知
  34. FEventHandler<String> onClearCanavsHandler = FEventHandler<String>();
  35. @override
  36. Widget build(BuildContext context) {
  37. return Scaffold(
  38. appBar: AppBar(
  39. title: const Text('Flutter White Board Demo'),
  40. ),
  41. body: Center(
  42. child: Column(
  43. children: [
  44. /// 白板组件入口
  45. Expanded(
  46. child: FWhiteBoard(
  47. initData: MockData.mockCanavsCopy,
  48. // initData: [],
  49. userId: currUserId,
  50. paintType: paintType,
  51. sendData: (data) {
  52. debugPrint("'$data',");
  53. },
  54. onReceiveData: onReceiveDataHandler,
  55. onClearCanavs: onClearCanavsHandler,
  56. patientColor: Colors.blue,
  57. ),
  58. ),
  59. _buildOperationButton(),
  60. ],
  61. ),
  62. ), // This trailing comma makes auto-formatting nicer for build methods.
  63. );
  64. }
  65. /// 操作按钮
  66. Widget _buildOperationButton() {
  67. return SizedBox(
  68. height: 50,
  69. child: Row(
  70. mainAxisAlignment: MainAxisAlignment.spaceAround,
  71. children: [
  72. TextButton(
  73. onPressed: () {
  74. setState(() {
  75. paintType = PaintType.straightLine;
  76. });
  77. },
  78. child: const Text(
  79. '直线',
  80. ),
  81. ),
  82. TextButton(
  83. onPressed: () {
  84. setState(() {
  85. paintType = PaintType.curvedLine;
  86. });
  87. },
  88. child: const Text(
  89. '曲线',
  90. ),
  91. ),
  92. TextButton(
  93. onPressed: () {
  94. onClearCanavsHandler.emit(this, currUserId);
  95. },
  96. child: const Text(
  97. '清除',
  98. ),
  99. ),
  100. TextButton(
  101. onPressed: () {
  102. onReceiveDataHandler.emit(this, MockData.mockWSNotificationA);
  103. },
  104. child: const Text(
  105. '模拟收到数据A',
  106. ),
  107. ),
  108. TextButton(
  109. onPressed: () {
  110. onReceiveDataHandler.emit(this, MockData.mockWSNotificationB);
  111. },
  112. child: const Text(
  113. '模拟收到数据B',
  114. ),
  115. ),
  116. ],
  117. ),
  118. );
  119. }
  120. }
  121. class MockData {
  122. static const String mockWSNotificationA =
  123. '{"u_Id":"123452","l_Id":"","points":"531829655285299852643030521030845135314951023182502732364995326849193323485533774833339847793442475834524736347447263485"}';
  124. static const String mockWSNotificationB =
  125. '{"u_Id":"123452","l_Id":"","points":"1905175319161742192717321959172119811710201316992034169920561699208816882099168821311688216416772185167722071677222816772239167722711677229316772325167723571688237916882422169924431710247617102530173225511732257317422594175326161764263717642648178626591786267017972680180726911818270218402713185127131872271318832713189427231916272319372723195927231970272320022713201327022056269120782659211026482121261621652594217525732197256222192540222925082251248722622454228424432294242223052390231623682327235723272325233823042338228223382271233822282338221723382207233821852338217423382174232721742316217423052174229421742284217422622185225121852240220722292207221922172208223921972260218622712175233621432357214323792143240021322422213224542121248721212519212125512121258321212616212126592121269121212734212127882121283121212885212129492121301421323057214331002154313221653175217531972186320821863208219732192197321922083229222932292240322922623229228432292294321923383219235932082370317524033165242431542424311124573089246830792478303625003003250029712500297124892971247829712457297124353014238130362359308923163154228432082251331522193391219734662175355221653628215436602143375721433843214339502143404721434144214341872143430621434392215444242165452121864596220846182219467222294682224047152262473622734736229447362305473623384736234847362381473624034726244647042468470424894650252246392543461825544543259745102619447826194403264143702652434926524284266242632662425226624241266242412652424126414241263042412597424125764273253243062500436024574435241345322359469323274801231649092305517823055318230554792316561923385802237059532403609324356211246862972489639425226416253264262532"}';
  126. static const List<String> mockCanavsCopy = [
  127. '{"u_Id":"123452","l_Id":"","points":"10121970107619481173193712491926135619051453189415611883161518611690185117121851172218401722182917221818"}',
  128. '{"u_Id":"123452","l_Id":"","points":"1378162313781677137817421378178613781872137819701378204513782154137822401378231613782457137825651378265213672738135628251356290013462955134630191346306313463084134631061346312813463139"}',
  129. '{"u_Id":"123452","l_Id":"","points":"12922262127023051259232712382392119524351173247811302543111925651098260810762630107626521066265210662662106626521066263010662608"}',
  130. '{"u_Id":"123452","l_Id":"","points":"143220781464210015072132156121651615220816582251167922621712229417442327176523381765234817762348"}',
  131. '{"u_Id":"123452","l_Id":"","points":"184117421916173220021721212117102217168823791667251916452626163427341602280915912842159128631580"}',
  132. '{"u_Id":"123452","l_Id":"","points":"21961494218515152185155821851591217416342174167721741710217417422174179721741861218518942185194821961970219620022196203521962045"}',
  133. '{"u_Id":"123452","l_Id":"","points":"2497156924971602249716232497166724871699247617322454181824431851243318832422191624111937240019592390198123792013236820242368203523572045234720452347205623472067"}',
  134. '{"u_Id":"123452","l_Id":"","points":"184122081862222918842273191622941927231619482348197023701981239219812403200224242002244620242457203424892045251120562522206725222067253220672543"}',
  135. '{"u_Id":"123452","l_Id":"","points":"21532186225021542325214324112121249721102573210026372089268020892713208927342078274520782756207827562089275621102745213227342165271321972680224026592273262623162605234825832370257323922573240325622413255124352551244625512457"}',
  136. '{"u_Id":"123452","l_Id":"","points":"2153235921742359220723592228235922502359227123592293235923042359232523592336235923472359"}',
  137. '{"u_Id":"123452","l_Id":"","points":"21962532222825322250253222822532231425322347253223792532240025322411253224222532244325322454253224652532"}',
  138. '{"u_Id":"123452","l_Id":"","points":"1722287918082868188428571970284621532825227128142390280324872792256227712626276027022749"}',
  139. '{"u_Id":"123452","l_Id":"","points":"227126522250269522282738219627812153283521312900208829552056300920343030201330741981311719703139195931601959317119593182"}',
  140. '{"u_Id":"123452","l_Id":"","points":"233629442390296524652998253030302605306326913095278831282863316029173182294932032960320329713203"}',
  141. '{"u_Id":"123442","l_Id":"","points":"5662267357482662581326525899264160172630610326196189260862542597628625976329258763292576"}',
  142. '{"u_Id":"123442","l_Id":"","points":"598522085985221959852229598522515985226259852273598522945985231659852327598523385985235959852370598524035985241359852435598524575985246859852500599625225996254359962565599625975996261959962641599626735996269559962727599627605996279259962803599628355996285759962868599628795996291159962922598529555985296559852998598530305985304159853084598530955974313959743149597431825974319359743214597432475974326859633301596333125963333359533366595333875953340959533442595334525942346359423496594235065942352859313561593135715931359359203604592036155920365859203669592036905920370159203712592037345920374559103755591037665910377759103799591038205899384258993853589938645899387458883874588838855888389658883907588839185888393958773939587739505877396158773972587739835867398358563972584539395834391858233896581338745802385358023820578037995780378857703766577037555770374557593745"}',
  143. '{"u_Id":"123442","l_Id":"","points":"571634425759342057913409582333875867336658993366592033445942333359533333597433235985332359853312600633016017330160283290603932906050327960603268607132686082325860933258609332476103324761033236"}',
  144. '{"u_Id":"123442","l_Id":"","points":"6340298763402998634030196340304163403063634030956340312863293149632931716319320363193225631932586308327963083312629733446286336662863377628633986286342062863452628634636286347462863485628634966286350662863517628635286286353962973539631935506340356163623561636235716372357163833582639435826405358264163582641635716426356164373550644835286448350664693485648034746480345264913420651233666512335565233333652333236534331265343301653432906534327965343268"}',
  145. '{"u_Id":"123442","l_Id":"","points":"65772749658827606598277165982803663128576642287966422890665229226663293366632944666329656674297666852987"}',
  146. '{"u_Id":"123442","l_Id":"","points":"71692413716924467169245771692522716925767169259771472673713726957115276070942792706129007051294470083052698630956943319369213236687833236857337768353409678134856771352867283615670636476685368066523755663137776620381065883864657738856566390765553929654539506545396165453950654539396545390765553896"}',
  147. '{"u_Id":"123442","l_Id":"","points":"7008320370293236707232907115334471583398722334747266351773203571736336047374362674063658743836807438370174603712746037237470372374703734"}',
  148. ];
  149. }