import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:trans_lark/generated/assets.dart';
import 'package:trans_lark/global/global_config.dart';
import 'package:trans_lark/page/index/index_controller.dart';
import 'package:trans_lark/util/t_object_utils.dart';
import 'package:trans_lark/widget/t_language_bar_widget.dart';

class IndexView extends StatelessWidget {
  final IndexController logic = Get.put(IndexController());

  IndexView({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Container(
        padding: const EdgeInsets.symmetric(horizontal: 12),
        decoration: const BoxDecoration(
          image: DecorationImage(
            image: AssetImage(Assets.imagesHomeBackground),
            fit: BoxFit.fill,
          ),
        ),
        child: SafeArea(
          child: Column(
            children: [
              _buildHead(),
              const SizedBox(height: 42),
              _buildDailyQuote(),
              Expanded(child: Container()),
              _buildTools(),
              Expanded(child: Container()),
              _buildTranslate(),
            ],
          ),
        ),
      ),
    );
  }

  Widget _buildHead() {
    return Padding(
      padding: const EdgeInsets.symmetric(vertical: 10),
      child: Row(
        mainAxisAlignment: MainAxisAlignment.spaceBetween,
        children: [
          GestureDetector(
            onTap: logic.openSettingsBottomSheet,
            child: Container(
              width: 36,
              height: 36,
              padding: const EdgeInsets.all(6.5),
              decoration: BoxDecoration(
                color: GlobalConfig.appColor,
                borderRadius: BorderRadius.circular(36),
              ),
              child: Image.asset(
                Assets.imagesHomeMore,
              ),
            ),
          ),
          const Text(
            GlobalConfig.appName,
            style: TextStyle(
              color: Color(0xff1E1E1E),
              fontSize: 24,
              fontWeight: FontWeight.w700,
            ),
          ),
          const SizedBox(width: 36),
        ],
      ),
    );
  }

  Widget _buildDailyQuote() {
    return GestureDetector(
      onTap: logic.toSceneCategory,
      child: Column(
        children: [
          Container(
            padding: const EdgeInsets.only(top: 28, left: 22, bottom: 31),
            decoration: const BoxDecoration(
              color: Color(0xffBFE9D4),
              borderRadius: BorderRadius.only(
                topLeft: Radius.circular(16),
                topRight: Radius.circular(16),
              ),
            ),
            child: Stack(
              clipBehavior: Clip.none,
              alignment: AlignmentDirectional.bottomStart,
              children: [
                Positioned(
                  bottom: 2.8,
                  child: Container(
                    width: 73,
                    height: 7,
                    decoration: BoxDecoration(
                      color: const Color(0xff5CC2AD),
                      borderRadius: BorderRadius.circular(16),
                    ),
                  ),
                ),
                Row(
                  children: [
                    const Text(
                      "Daily Quote",
                      style: TextStyle(
                        fontSize: 20,
                        fontWeight: FontWeight.w800,
                        fontStyle: FontStyle.italic,
                        color: Color(0xff240F69),
                      ),
                    ),
                    Container(
                      margin: const EdgeInsets.only(left: 5),
                      child: Image.asset(
                        Assets.imagesArrowRight,
                        color: const Color(0xff240F69),
                        width: 14,
                        height: 14,
                      ),
                    ),
                  ],
                ),
                Positioned(
                  right: -20,
                  bottom: -31,
                  child: Image.asset(
                    Assets.imagesSuspendedDecoration,
                    width: 211.41,
                    height: 99.14,
                  ),
                ),
              ],
            ),
          ),
          Column(
            children: [
              Container(
                width: double.infinity,
                height: 168,
                padding: const EdgeInsets.symmetric(horizontal: 20),
                alignment: Alignment.center,
                decoration: const BoxDecoration(
                  color: Colors.white,
                  borderRadius: BorderRadius.only(
                    bottomLeft: Radius.circular(16),
                    bottomRight: Radius.circular(16),
                  ),
                ),
                child: Column(
                  children: [
                    Expanded(
                      child: Column(
                        mainAxisAlignment: MainAxisAlignment.center,
                        crossAxisAlignment: CrossAxisAlignment.start,
                        children: [
                          Obx(() {
                            return Text(
                              logic.fromLanguage.value != null
                                  ? logic.fromLanguage.value!.languageName
                                  : '',
                              style: const TextStyle(
                                fontSize: 12,
                                color: Color(0xffC2C3C5),
                              ),
                            );
                          }),
                          const SizedBox(height: 9),
                          Row(
                            mainAxisAlignment: MainAxisAlignment.spaceBetween,
                            children: [
                              Expanded(
                                child: Obx(() {
                                  return Text(
                                    TObjectUtils.getStr(logic.fromStr.value),
                                    overflow: TextOverflow.ellipsis,
                                    style: const TextStyle(
                                      fontSize: 16,
                                      color: Color(0xff152A3D),
                                      fontWeight: FontWeight.w500,
                                    ),
                                  );
                                }),
                              ),
                              GestureDetector(
                                onTap: () => logic.translatorTtsPlay(true),
                                child: Container(
                                  width: 24,
                                  height: 24,
                                  padding: const EdgeInsets.all(3),
                                  decoration: BoxDecoration(
                                      color: GlobalConfig.appColor,
                                      borderRadius: BorderRadius.circular(12)),
                                  child: FittedBox(
                                    fit: BoxFit.none,
                                    child: Image.asset(
                                      Assets.imagesSpeakerIcon,
                                      width: 16,
                                      height: 16,
                                    ),
                                  ),
                                ),
                              ),
                            ],
                          ),
                        ],
                      ),
                    ),
                    const Divider(height: 1, thickness: 1),
                    Expanded(
                      child: Column(
                        mainAxisAlignment: MainAxisAlignment.center,
                        crossAxisAlignment: CrossAxisAlignment.start,
                        children: [
                          Obx(() {
                            return Text(
                              logic.toLanguage.value != null
                                  ? logic.toLanguage.value!.languageName
                                  : '',
                              style: const TextStyle(
                                fontSize: 12,
                                color: Color(0xffC2C3C5),
                              ),
                            );
                          }),
                          const SizedBox(height: 9),
                          Row(
                            mainAxisAlignment: MainAxisAlignment.spaceBetween,
                            children: [
                              Expanded(
                                child: Obx(() {
                                  return Text(
                                    TObjectUtils.getStr(logic.toStr.value),
                                    overflow: TextOverflow.ellipsis,
                                    style: const TextStyle(
                                      fontSize: 16,
                                      color: Color(0xff152A3D),
                                      fontWeight: FontWeight.w500,
                                    ),
                                  );
                                }),
                              ),
                              GestureDetector(
                                onTap: () => logic.translatorTtsPlay(false),
                                child: Container(
                                  width: 24,
                                  height: 24,
                                  padding: const EdgeInsets.all(3),
                                  decoration: BoxDecoration(
                                    color: GlobalConfig.appColor,
                                    borderRadius: BorderRadius.circular(12),
                                  ),
                                  child: FittedBox(
                                    fit: BoxFit.none,
                                    child: Image.asset(
                                      Assets.imagesSpeakerIcon,
                                      width: 16,
                                      height: 16,
                                    ),
                                  ),
                                ),
                              ),
                            ],
                          ),
                        ],
                      ),
                    ),
                  ],
                ),
              ),
            ],
          ),
        ],
      ),
    );
  }

  Widget _buildTools() {
    return Container(
      padding: const EdgeInsets.symmetric(horizontal: 12),
      child: Row(
        children: [
          Column(
            children: [
              GestureDetector(
                onTap: logic.toPhotos,
                child: Container(
                  width: 72,
                  height: 72,
                  padding: const EdgeInsets.all(10),
                  decoration: BoxDecoration(
                    color: Colors.white,
                    borderRadius: BorderRadius.circular(72),
                  ),
                  child: Image.asset(
                    Assets.imagesToolsPhoto,
                  ),
                ),
              ),
              const Padding(
                padding: EdgeInsets.only(top: 10),
                child: Text(
                  "Photo",
                  style: TextStyle(
                    fontSize: 14,
                    color: Colors.black,
                    fontWeight: FontWeight.w500,
                  ),
                ),
              )
            ],
          ),
          Expanded(child: Container()),
          Column(
            children: [
              GestureDetector(
                onTap: logic.toP2P,
                child: Container(
                  width: 72,
                  height: 72,
                  padding: const EdgeInsets.all(10),
                  decoration: BoxDecoration(
                    color: Colors.white,
                    borderRadius: BorderRadius.circular(72),
                  ),
                  child: Image.asset(
                    Assets.imagesToolsDialog,
                  ),
                ),
              ),
              const Padding(
                padding: EdgeInsets.only(top: 10),
                child: Text(
                  "Face2face",
                  style: TextStyle(
                    fontSize: 14,
                    color: Colors.black,
                    fontWeight: FontWeight.w500,
                  ),
                ),
              )
            ],
          ),
          Expanded(child: Container()),
          Column(
            children: [
              GestureDetector(
                onTap: logic.toTranslateHistory,
                child: Container(
                  width: 72,
                  height: 72,
                  padding: const EdgeInsets.all(10),
                  decoration: BoxDecoration(
                    color: Colors.white,
                    borderRadius: BorderRadius.circular(72),
                  ),
                  child: Image.asset(
                    Assets.imagesToolsHistory,
                  ),
                ),
              ),
              const Padding(
                padding: EdgeInsets.only(top: 10),
                child: Text(
                  "History",
                  style: TextStyle(
                    fontSize: 14,
                    color: Colors.black,
                    fontWeight: FontWeight.w500,
                  ),
                ),
              )
            ],
          ),
        ],
      ),
    );
  }

  Widget _buildTranslate() {
    return Column(
      children: [
        GestureDetector(
          onTap: logic.toTranslate,
          child: Container(
            height: 91,
            alignment: Alignment.center,
            decoration: BoxDecoration(
              color: GlobalConfig.appColor,
              borderRadius: BorderRadius.circular(22),
            ),
            child: Row(
              children: [
                const Expanded(
                  child: Padding(
                    padding: EdgeInsets.only(left: 20),
                    child: Text(
                      "Type to Translate",
                      style: TextStyle(
                        fontSize: 20,
                        fontWeight: FontWeight.w400,
                        color: Colors.white,
                      ),
                    ),
                  ),
                ),
                Padding(
                  padding: const EdgeInsets.only(right: 20),
                  child: GestureDetector(
                    onTap: logic.onTapSpeak,
                    child: Container(
                      height: 36,
                      width: 36,
                      padding: const EdgeInsets.all(7),
                      decoration: BoxDecoration(
                        color: Colors.white,
                        borderRadius: BorderRadius.circular(18),
                      ),
                      child: Image.asset(
                        Assets.imagesHomeMicrophone,
                      ),
                    ),
                  ),
                ),
              ],
            ),
          ),
        ),
        const SizedBox(height: 20),
        const TLanguageBarWidget(),
        const SizedBox(height: 20),
      ],
    );
  }
}
