import 'package:aku_new_community/extensions/num_ext.dart';
import 'package:aku_new_community/extensions/widget_list_ext.dart';
import 'package:aku_new_community/utils/application_utils.dart';
import 'package:aku_new_community/widget/bee_scaffold.dart';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:velocity_x/src/extensions/iterable_ext.dart';
import 'package:velocity_x/src/extensions/string_ext.dart';

class AllApplicationNewPage extends StatefulWidget {
  const AllApplicationNewPage({Key? key}) : super(key: key);

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

class _AllApplicationNewPageState extends State<AllApplicationNewPage> {
  List<String> rootTypes = ['物业服务', '出行安全', '居民生活', '关于社区', '智慧服务', '附近市场'];

  List<String> getApplications(int index) {
    switch (index) {
      case 0:
        return ['报事报修', '设施预约', '生活缴费', '装修管理'];
      case 1:
        return [
          '开门码',
          '物品出门',
          '地理信息',
          '小蜜蜂任务',
        ];
      case 2:
        return ['便民电话', '问卷调查', '活动投票', '快递包裹', '投诉表扬', '业委会', '社区介绍', '借还管理'];
      case 3:
        return ['服务浏览', '周边企业', '住房说明', '电子商务'];
      case 4:
        return ['智慧养老', '任务发布', '周边服务', '共享投屏'];
      case 5:
        return ['自营商城', '邻家宠物', '共享停车', '二手市场'];
      default:
        return [];
    }
  }

  @override
  Widget build(BuildContext context) {
    return BeeScaffold(
        title: '全部应用',
        body: ListView(
          padding: EdgeInsets.symmetric(horizontal: 32.w, vertical: 32.w),
          children: rootTypes
              .mapIndexed((e, index) => _applicationTile(index))
              .toList()
              .sepWidget(separate: 16.hb),
        ));
  }

  Container _applicationTile(int index) {
    return Container(
      width: 686.w,
      padding: EdgeInsets.symmetric(
        vertical: 32.w,
      ),
      decoration: BoxDecoration(
          color: Colors.white, borderRadius: BorderRadius.circular(16.w)),
      child: Column(
        crossAxisAlignment: CrossAxisAlignment.start,
        mainAxisSize: MainAxisSize.min,
        children: [
          Padding(
            padding: EdgeInsets.only(left: 32.w, bottom: 24.w),
            child: rootTypes[index]
                .text
                .size(32.sp)
                .color(Color(0xFF2B2B2B))
                .bold
                .make(),
          ),
          ConstrainedBox(
            constraints: BoxConstraints(
                maxHeight: getApplications(index).length ~/ 4 * 140.w +
                    ((getApplications(index).length - 4) ~/ 4 * 30.w)),
            child: GridView.count(
              shrinkWrap: true,
              crossAxisCount: 4,
              physics: NeverScrollableScrollPhysics(),
              children: ApplicationUtil(getApplications(index))
                  .elements
                  .map((e) => applicationItem(e))
                  .toList(),
            ),
          ),
        ],
      ),
    );
  }

  Widget applicationItem(AppElement appElement) {
    return GestureDetector(
      onTap: appElement.onTap,
      child: Column(
        mainAxisSize: MainAxisSize.min,
        children: [
          Image.asset(
            appElement.imgPath,
            width: 96.w,
            height: 96.w,
          ),
          8.hb,
          appElement.title.text.size(24.sp).color(Color(0xFF333333)).make(),
        ],
      ),
    );
  }
}