import 'package:PiliPlus/models/common/setting_type.dart'; import 'package:PiliPlus/pages/setting/models/model.dart'; import 'package:flutter/material.dart'; class CommonSetting extends StatefulWidget { const CommonSetting({ super.key, required this.settingType, this.showAppBar = true, }); final bool showAppBar; final SettingType settingType; @override State createState() => _CommonSettingState(); } class _CommonSettingState extends State { late EdgeInsets padding; late List settings; void _initSetting() { settings = widget.settingType.settings; } @override void initState() { super.initState(); _initSetting(); } @override void didUpdateWidget(CommonSetting oldWidget) { super.didUpdateWidget(oldWidget); if (widget.settingType != oldWidget.settingType) { _initSetting(); } } @override void didChangeDependencies() { super.didChangeDependencies(); padding = MediaQuery.viewPaddingOf(context); } @override Widget build(BuildContext context) { final showAppBar = widget.showAppBar; return Scaffold( resizeToAvoidBottomInset: false, appBar: showAppBar ? AppBar(title: Text(widget.settingType.title)) : null, body: ListView.builder( key: ValueKey(widget.settingType), padding: EdgeInsets.only( left: showAppBar ? padding.left : 0, right: showAppBar ? padding.right : 0, bottom: padding.bottom + 100, ), itemCount: settings.length, itemBuilder: (context, index) => settings[index].widget, ), ); } }