import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart';
import 'package:mohem_flutter_app/extensions/int_extensions.dart';
import 'package:mohem_flutter_app/extensions/string_extensions.dart';
import 'package:shimmer/shimmer.dart';

extension WidgetExtensions on Widget {
  Widget onPress(VoidCallback onTap) => InkWell(onTap: onTap, child: this);

  Widget get expanded => Expanded(child: this);

  Widget get center => Center(child: this);

  Widget paddingAll(double _value) => Padding(padding: EdgeInsets.all(_value), child: this);

  Widget paddingOnly({double left = 0.0, double right = 0.0, double top = 0.0, double bottom = 0.0}) =>
      Padding(padding: EdgeInsets.only(left: left, right: right, top: top, bottom: bottom), child: this);

  Widget toShimmer({bool isShow = true}) => isShow
      ? Shimmer.fromColors(
          baseColor: Color(0xffe8eff0),
          highlightColor: Colors.white,
          child: Container(
            child: this,
            color: Colors.white,
          ),
        )
      : Container(
          child: this,
        );

  Widget animatedSwither() => AnimatedSwitcher(
        duration: const Duration(milliseconds: 500),
        // transitionBuilder: (Widget child, Animation<double> animation) {
        //   return ScaleTransition(scale: animation, child: child);
        // },
        switchInCurve: Curves.linearToEaseOut,
        switchOutCurve: Curves.linearToEaseOut,
        child: this,
      );

  Widget objectContainerView({String title = ""}) {
    return Container(
      padding: const EdgeInsets.only(top: 15, bottom: 15, left: 14, right: 14),
      decoration: BoxDecoration(
        color: Colors.white,
        borderRadius: BorderRadius.circular(15),
        boxShadow: [
          BoxShadow(
            color: const Color(0xff000000).withOpacity(.05),
            blurRadius: 26,
            offset: const Offset(0, -3),
          ),
        ],
      ),
      child: Column(
        crossAxisAlignment: CrossAxisAlignment.start,
        mainAxisSize: MainAxisSize.min,
        children: [
          if (title.isNotEmpty) title.toText16(),
          if (title.isNotEmpty) 12.height,
          this,
        ],
      ),
    );
  }
}
