import 'package:flutter/material.dart'; class NormalItem extends StatefulWidget { final String? title; final Function? getTitle; final String? subtitle; final Function? getSubtitle; final String? setKey; final bool? defaultVal; final ValueChanged? onChanged; final bool? needReboot; final Widget? leading; final Function? getTrailing; final Function? onTap; final EdgeInsetsGeometry? contentPadding; final TextStyle? titleStyle; const NormalItem({ this.title, this.getTitle, this.subtitle, this.getSubtitle, this.setKey, this.defaultVal, this.onChanged, this.needReboot, this.leading, this.getTrailing, this.onTap, this.contentPadding, this.titleStyle, super.key, }); @override State createState() => _NormalItemState(); } class _NormalItemState extends State { @override Widget build(BuildContext context) { return ListTile( contentPadding: widget.contentPadding, onTap: () { widget.onTap?.call(() { setState(() {}); }); }, title: Text(widget.title ?? widget.getTitle?.call(), style: widget.titleStyle ?? Theme.of(context).textTheme.titleMedium!), subtitle: widget.subtitle != null || widget.getSubtitle != null ? Text(widget.subtitle ?? widget.getSubtitle?.call(), style: Theme.of(context) .textTheme .labelMedium! .copyWith(color: Theme.of(context).colorScheme.outline)) : null, leading: widget.leading, trailing: widget.getTrailing?.call(), ); } }