12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- import 'package:flutter/foundation.dart';
- import 'package:get/get.dart';
- import 'package:flutter/material.dart';
- import 'package:vitalapp/components/button.dart';
- import 'package:vitalapp/pages/home/personal_center/controller.dart';
- class SignaturePage extends GetView<PersonalCenterController> {
- const SignaturePage({super.key});
- @override
- Widget build(BuildContext context) {
- return Column(
- mainAxisAlignment: MainAxisAlignment.center,
- children: [
- _buildPreview(),
- const SizedBox(height: 20),
- _buildOperateRow(),
- ],
- );
- }
- Widget _buildOperateRow() {
- return Row(
- mainAxisAlignment: MainAxisAlignment.center,
- children: [
- SizedBox(
- width: 120,
- child: VButton(
- label: "签 名",
- onTap: controller.rewrite,
- ),
- ),
- SizedBox(width: 20),
- if (kIsWeb)
- SizedBox(
- width: 120,
- child: VButton(
- label: "导 入",
- onTap: controller.chooseImage,
- ),
- ),
- if (kIsWeb) SizedBox(width: 20),
- SizedBox(
- width: 120,
- child: VButton(
- label: "清 空",
- onTap: controller.clear,
- ),
- ),
- ],
- );
- }
- Widget _buildPreview() {
- return Obx(() {
- final imageWidget = controller.state.signaturUrl != null
- ? _buildNetworkImagePreview()
- : _buildEmptyPreview();
- return Container(
- decoration: BoxDecoration(
- color: Colors.white,
- border: Border.all(color: Colors.grey),
- ),
- width: 420,
- height: 270,
- child: imageWidget,
- );
- });
- }
- Widget _buildNetworkImagePreview() {
- final url = controller.state.signaturUrl!;
- return Image.network(
- url,
- fit: BoxFit.contain,
- errorBuilder: (context, error, stackTrace) => _buildEmptyPreview(),
- );
- }
- Widget _buildEmptyPreview() {
- return Column(
- mainAxisAlignment: MainAxisAlignment.center,
- mainAxisSize: MainAxisSize.min,
- children: const [
- Icon(
- Icons.person_4_outlined,
- size: 56,
- ),
- SizedBox(height: 12),
- Text(
- "未设置",
- style: TextStyle(fontSize: 32),
- ),
- ],
- );
- }
- }
|