import 'package:flutter/material.dart';
import 'package:flutter_city_picker/listener/picker_listener.dart';
import 'package:flutter_city_picker/model/address.dart';
import 'package:flutter_city_picker/view/city_picker.dart';

class CityPicker {
  /// 展示
  static void show({
    required BuildContext context,
    AnimationController? animController,
    double opacity = 0.5,
    bool dismissible = true,
    double height = 500.0,
    double titleHeight = 50.0,
    double corner = 20.0,
    Color? backgroundColor,
    double paddingLeft = 15.0,
    Widget? titleWidget,
    String? selectText,
    Widget? closeWidget,
    double tabHeight = 40.0,
    bool showTabIndicator = true,
    double tabPadding = 10.0,
    Color? tabIndicatorColor,
    double tabIndicatorHeight = 3.0,
    double labelTextSize = 15.0,
    Color? selectedLabelColor,
    Color? unselectedLabelColor,
    double itemHeadHeight = 30.0,
    Color? itemHeadBackgroundColor,
    Color? itemHeadLineColor,
    double itemHeadLineHeight = 0.1,
    TextStyle? itemHeadTextStyle,
    double itemHeight = 40.0,
    double indexBarWidth = 28,
    double indexBarItemHeight = 20,
    Color indexBarBackgroundColor = Colors.black12,
    TextStyle? indexBarTextStyle,
    Widget? itemSelectedIconWidget,
    TextStyle? itemSelectedTextStyle,
    TextStyle? itemUnSelectedTextStyle,
    List<AddressNode>? initialAddress,
    required CityPickerListener cityPickerListener,
  }) {
    showGeneralDialog(
      context: context,
      barrierColor: Colors.black.withOpacity(opacity),
      barrierDismissible: dismissible,
      barrierLabel: MaterialLocalizations.of(context).modalBarrierDismissLabel,
      transitionDuration: const Duration(milliseconds: 300),
      pageBuilder: (context, animation, secondaryAnimation) {
        return Align(
          alignment: Alignment.bottomCenter,
          child: Material(
            color: Colors.transparent,
            child: Container(
              width: MediaQuery.of(context).size.width,
              height: height,
              decoration: BoxDecoration(
                color: backgroundColor ?? Colors.white,
                borderRadius: BorderRadius.only(
                  topLeft: Radius.circular(corner),
                  topRight: Radius.circular(corner),
                ),
              ),
              child: CityPickerWidget(
                height: height,
                titleHeight: titleHeight,
                corner: corner,
                backgroundColor: backgroundColor,
                paddingLeft: paddingLeft,
                titleWidget: titleWidget,
                selectText: selectText,
                closeWidget: closeWidget,
                tabHeight: tabHeight,
                showTabIndicator: showTabIndicator,
                tabPadding: tabPadding,
                tabIndicatorColor: tabIndicatorColor,
                tabIndicatorHeight: tabIndicatorHeight,
                labelTextSize: labelTextSize,
                selectedLabelColor: selectedLabelColor,
                unselectedLabelColor: unselectedLabelColor,
                itemHeadHeight: itemHeadHeight,
                itemHeadBackgroundColor: itemHeadBackgroundColor,
                itemHeadLineColor: itemHeadLineColor,
                itemHeadLineHeight: itemHeadLineHeight,
                itemHeadTextStyle: itemHeadTextStyle,
                itemHeight: itemHeight,
                indexBarWidth: indexBarWidth,
                indexBarItemHeight: indexBarItemHeight,
                indexBarBackgroundColor: indexBarBackgroundColor,
                indexBarTextStyle: indexBarTextStyle,
                itemSelectedIconWidget: itemSelectedIconWidget,
                itemSelectedTextStyle: itemSelectedTextStyle,
                itemUnSelectedTextStyle: itemUnSelectedTextStyle,
                initialAddress: initialAddress,
                cityPickerListener: cityPickerListener,
              ),
            ),
          ),
        );
      },
    );
  }
}