Files
PiliPlus/lib/pages/setting/common_setting.dart
dom c4c0852dea opt ui
Signed-off-by: dom <githubaccount56556@proton.me>
2026-07-31 22:18:27 +08:00

66 lines
1.7 KiB
Dart

import 'package:PiliPlus/common/widgets/scaffold/simple_scaffold.dart';
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<CommonSetting> createState() => _CommonSettingState();
}
class _CommonSettingState extends State<CommonSetting> {
late EdgeInsets padding;
late List<SettingsModel> 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 SimpleScaffold(
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,
),
);
}
}