import 'dart:async';

import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:mc_common_app/config/routes.dart';
import 'package:mc_common_app/extensions/int_extensions.dart';
import 'package:mc_common_app/extensions/string_extensions.dart';
import 'package:mc_common_app/generated/locale_keys.g.dart';
import 'package:mc_common_app/models/chat_models/chat_message_model.dart';
import 'package:mc_common_app/models/setting_utils_models/app_info_model.dart';
import 'package:mc_common_app/theme/colors.dart';
import 'package:mc_common_app/utils/enums.dart';
import 'package:mc_common_app/utils/navigator.dart';
import 'package:mc_common_app/view_models/setting_options_view_model.dart';
import 'package:mc_common_app/views/advertisement/components/picked_images_container_widget.dart';
import 'package:mc_common_app/widgets/common_widgets/app_bar.dart';
import 'package:mc_common_app/widgets/extensions/extensions_widget.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:provider/provider.dart';

class SettingOptionsAppInfo extends StatefulWidget {
  const SettingOptionsAppInfo({super.key});

  @override
  State<SettingOptionsAppInfo> createState() => _SettingOptionsAppInfoState();
}

class _SettingOptionsAppInfoState extends State<SettingOptionsAppInfo> {
  late SettingOptionsVM settingsOptionsVM;

  @override
  void initState() {
    settingsOptionsVM = context.read<SettingOptionsVM>();
    scheduleMicrotask(() async {
      await settingsOptionsVM.getAppInfoList();
    });
    super.initState();
  }

  Widget showData(String title, String value) {
    return Row(
      crossAxisAlignment: CrossAxisAlignment.start,
      children: [
        title.toText(
          fontSize: 13,
          color: MyColors.darkTextColor,
        ),
        if (title.isNotEmpty) 5.width,
        Flexible(
          child: value.toText(
            fontSize: 13,
            color: MyColors.lightTextColor,
          ),
        )
      ],
    );
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: CustomAppBar(
          title: LocaleKeys.appInfo.tr(),
          isRemoveBackButton: false,
          isDrawerEnabled: false,
          onBackButtonTapped: () => Navigator.pop(context),
        ),
        body: Consumer(
          builder: (BuildContext context, SettingOptionsVM settingsOptionsVM, Widget? child) {
            return Container(
              color: MyColors.backgroundColor,
              width: double.infinity,
              height: double.infinity,
              child: Column(
                children: [
                  16.height,
                  Expanded(
                      child: RefreshIndicator(
                    onRefresh: () async => await settingsOptionsVM.getAppInfoList(),
                    child: (settingsOptionsVM.state == ViewState.busy)
                        ? const Center(child: CircularProgressIndicator())
                        : settingsOptionsVM.appInfoList.isEmpty
                            ? Padding(
                                padding: const EdgeInsets.all(21),
                                child: Center(child: LocaleKeys.somethingWrong.tr().toText(textAlign: TextAlign.center, fontSize: 16, color: MyColors.lightTextColor)),
                              )
                            : ListView.separated(
                                itemCount: settingsOptionsVM.appInfoList.length,
                                padding: const EdgeInsets.all(16),
                                itemBuilder: (context, index) {
                                  AppInfoModel appInfoModel = settingsOptionsVM.appInfoList[index];
                                  return Column(
                                    crossAxisAlignment: CrossAxisAlignment.start,
                                    children: [
                                      (appInfoModel.header ?? "").toString().toText(fontSize: 16),
                                      5.height,
                                      (appInfoModel.content ?? "").toString().toText(fontSize: 14, color: MyColors.lightTextColor),
                                      if (appInfoModel.images != null && appInfoModel.images!.isNotEmpty) ...[
                                        PickedFilesContainer(
                                          pickedFiles: appInfoModel.images ?? [],
                                          isReview: true,
                                          onAddFilePressed: () {},
                                        ).onPress(() {
                                          List<MessageImageModel> images = [];
                                          for (var image in appInfoModel.images!) {
                                            images.add(MessageImageModel(
                                              id: image.id,
                                              isFromNetwork: true,
                                              imageUrl: image.filePath,
                                            ));
                                          }
                                          navigateWithName(context, AppRoutes.mediaViewerScreen, arguments: images);
                                        }),
                                      ]
                                    ],
                                  ).toContainer(isShadowEnabled: true);
                                },
                                separatorBuilder: (context, index) => 16.height,
                              ),
                  )),
                ],
              ),
            );
          },
        ));
  }
}
