signature.dart 1.6 KB

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