import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
import 'package:signature/signature.dart';
import 'package:velocity_x/velocity_x.dart';

class SignNameBoard extends StatefulWidget {
  static Future defalutBoard() async {
    SignatureController _signatureController = SignatureController(
      penColor: Colors.black,
      penStrokeWidth: 5.w,
      exportBackgroundColor: Colors.transparent,
    );
    return await navigator!.push(
      PageRouteBuilder(
        fullscreenDialog: true,
        opaque: false,
        pageBuilder: (context, animation, sAnimation) {
          return FadeTransition(
            opacity: animation,
            child: SignNameBoard(
              width: 600.w,
              height: double.infinity,
              signatureController: _signatureController,
            ),
          );
        },
      ),
    );
  }

  final SignatureController signatureController;
  final bool forceToHorizontal;
  final double width;
  final double height;

  SignNameBoard(
      {Key? key,
      required this.signatureController,
      this.forceToHorizontal = true,
      required this.width,
      required this.height})
      : super(key: key);

  @override
  _SignNameBoardState createState() => _SignNameBoardState();
}

class _SignNameBoardState extends State<SignNameBoard> {
  @override
  void initState() {
    super.initState();
    if (widget.forceToHorizontal) {
      WidgetsFlutterBinding.ensureInitialized();
      SystemChrome.setPreferredOrientations([
        DeviceOrientation.landscapeLeft,
        DeviceOrientation.landscapeRight,
      ]);
    }
  }

  @override
  void dispose() {
    widget.signatureController.dispose();
    WidgetsFlutterBinding.ensureInitialized();
    SystemChrome.setPreferredOrientations([
      DeviceOrientation.portraitUp,
      DeviceOrientation.portraitDown,
    ]);
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    Signature signature = Signature(
      backgroundColor: Colors.white,
      controller: widget.signatureController,
      width: widget.width,
      height: widget.height,
    );
    IconButton finishButton = IconButton(
      iconSize: 50.w,
      onPressed: () {
        Get.back(result: widget.signatureController.toPngBytes());
      },
      icon: Icon(
        CupertinoIcons.checkmark_alt_circle,
        color: Colors.blue,
        // size: 100.w,
      ),
    );
    IconButton clearButton = IconButton(
      iconSize: 50.w,
      onPressed: () {
        widget.signatureController.clear();
        setState(() {});
      },
      icon: Icon(
        CupertinoIcons.clear_circled,
        color: Colors.red,
        // size: 100.w,
      ),
    );
    return Scaffold(
      body: widget.forceToHorizontal
          ? Row(
              mainAxisAlignment: MainAxisAlignment.center,
              children: [
                signature,
                Material(
                  child: Column(
                    children: [
                      finishButton.expand(),
                      clearButton.expand(),
                    ],
                  ),
                ).expand()
              ],
            )
          : Column(
              children: [
                signature,
                Material(
                  child: Row(
                    children: [
                      finishButton.expand(),
                      clearButton.expand(),
                    ],
                  ),
                ).expand(),
              ],
            ),
    );
  }
}