view.dart 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. import 'dart:convert';
  2. import 'package:flutter/material.dart';
  3. import 'package:get/get.dart';
  4. import 'package:vnoteapp/components/button.dart';
  5. import 'controller.dart';
  6. class DoctorSignatureSettingPage
  7. extends GetView<DoctorSignatureSettingController> {
  8. const DoctorSignatureSettingPage({super.key});
  9. @override
  10. Widget build(BuildContext context) {
  11. return Column(
  12. mainAxisAlignment: MainAxisAlignment.center,
  13. children: [
  14. _buildPreview(),
  15. const SizedBox(height: 20),
  16. _buildOperateRow(),
  17. ],
  18. );
  19. }
  20. Widget _buildOperateRow() {
  21. return VButton(
  22. label: "设 置",
  23. onTap: controller.rewrite,
  24. );
  25. }
  26. Widget _buildPreview() {
  27. return Obx(() {
  28. final imageWidget = controller.state.signaturBase64 != null
  29. ? _buildBase64Preview()
  30. : _buildEmptyPreview();
  31. return Container(
  32. decoration: BoxDecoration(
  33. color: Colors.white,
  34. border: Border.all(color: Colors.grey),
  35. ),
  36. width: 420,
  37. height: 270,
  38. child: imageWidget,
  39. );
  40. });
  41. }
  42. Widget _buildBase64Preview() {
  43. final base64 = controller.state.signaturBase64!;
  44. final bytes = base64Decode(base64);
  45. return Image.memory(
  46. bytes,
  47. fit: BoxFit.contain,
  48. );
  49. }
  50. Widget _buildEmptyPreview() {
  51. return const Column(
  52. mainAxisAlignment: MainAxisAlignment.center,
  53. mainAxisSize: MainAxisSize.min,
  54. children: [
  55. Icon(
  56. Icons.person_4_outlined,
  57. size: 56,
  58. ),
  59. SizedBox(height: 12),
  60. Text(
  61. "未设置",
  62. style: TextStyle(fontSize: 32),
  63. ),
  64. ],
  65. );
  66. }
  67. }