import 'dart:ui'; import 'package:flutter/material.dart'; class FikoYTButtonKutu extends StatefulWidget { final String? baslik; final String? deger; final FikoYTButtonKutuTheme? tema; final Widget sagSimge; final double maksYukseklik; final double maksGenislik; final Widget? diyalog; // final FikoDialogAyarlari? diyalogAyarlari; // final BoxConstraints diyalogOlculendirme; final Function()? tiklandi; final Function(dynamic deger)? degisti; final String? simgeSol; Widget? sonEk; final double? radius; FikoYTButtonKutu( {super.key, liste, secilenler, this.baslik, this.deger, this.tiklandi, this.tema, maksYukseklik, maksGenislik, this.simgeSol, this.sonEk, this.diyalog, this.degisti, radius, // diyalogOlculendirme, diyalogAyarlari, sagSimge}) : maksYukseklik = maksYukseklik ?? 3000.0, maksGenislik = maksGenislik ?? 250, sagSimge = sagSimge ?? const Icon(Icons.arrow_drop_down), radius = radius ?? 0; // diyalogOlculendirme = diyalogOlculendirme ?? const BoxConstraints(maxHeight: 350, maxWidth: 550); // diyalogAyarlari = diyalogAyarlari ?? FikoDialogAyarlari(); @override _FikoYTButtonKutuState createState() => _FikoYTButtonKutuState(); } class _FikoYTButtonKutuState extends State { @override Widget build(BuildContext context) { return Container( constraints: BoxConstraints(maxWidth: widget.maksGenislik, maxHeight: widget.maksYukseklik), clipBehavior: Clip.hardEdge, child: InkWell( child: InputDecorator( isEmpty: widget.deger == null, isFocused: false, decoration: InputDecoration( contentPadding: const EdgeInsets.all(5.0), labelText: widget.baslik, floatingLabelBehavior: FloatingLabelBehavior.auto, alignLabelWithHint: true, fillColor: Colors.transparent, filled: true, // errorText: 'Error message', isDense: true, constraints: BoxConstraints( maxWidth: 250, ), border: OutlineInputBorder(borderRadius: BorderRadius.all(Radius.circular(widget.radius!.toDouble()))), prefixIconConstraints: const BoxConstraints(maxWidth: 16, minWidth: 16), prefixIcon: Text( widget.simgeSol ?? "", style: TextStyle( fontSize: 14, ), textAlign: TextAlign.center, ), suffix: widget.sonEk, ), child: Text( widget.deger ?? "", maxLines: 1, textAlign: TextAlign.start, overflow: TextOverflow.ellipsis, ), ), ), ); } } class FikoYTButtonKutuTheme extends ThemeExtension { FikoYTButtonKutuTheme({ this.backgroundColor, this.borderColor, this.shadowColor, this.radius, this.spacing, this.elevation, }); Color? backgroundColor; Color? borderColor; Color? shadowColor; double? radius; double? spacing; double? elevation; @override FikoYTButtonKutuTheme copyWith({ Color? arkaPlanRengi, Color? borderColor, Color? shadowColor, double? radius, double? spacing, double? elevation, }) { return FikoYTButtonKutuTheme( backgroundColor: arkaPlanRengi ?? backgroundColor, radius: radius ?? this.radius, spacing: spacing ?? this.spacing, elevation: elevation ?? this.elevation, borderColor: borderColor ?? this.borderColor, shadowColor: shadowColor ?? this.shadowColor, ); } @override FikoYTButtonKutuTheme lerp(FikoYTButtonKutuTheme other, double t) { return FikoYTButtonKutuTheme( backgroundColor: Color.lerp(backgroundColor, other.backgroundColor, t), radius: lerpDouble(radius, other.radius, t), spacing: lerpDouble(spacing, other.spacing, t), elevation: lerpDouble(elevation, other.elevation, t), borderColor: Color.lerp(borderColor, other.borderColor, t), shadowColor: Color.lerp(shadowColor, other.shadowColor, t), ); } }