Files
PiliPlus/lib/pages/setting/common_setting.dart
My-Responsitories 9d94c72e95 tweaks (#2426)
* opt: danmaku weight

* opt: cache clean

* opt: level img

* opt: play icon

* opt: svg big-vip

* opt: webview ua

* opt: simple dialog

* feat: export vtt

* tweak

* opt: mapIndexed

* feat: more subtitle

* refa: settings page

* feat: codec list options

* drawPath

Signed-off-by: dom <githubaccount56556@proton.me>

* custom dialog option

Signed-off-by: dom <githubaccount56556@proton.me>

* update

Signed-off-by: dom <githubaccount56556@proton.me>

* Revert "drawPath"

This reverts commit e8a4b19f0f.

* opt: _initStreamIndex

* fix: avoid gap

* fix: scale [skip ci]

* fix: hide repost menu not login

* tweaks

Signed-off-by: dom <githubaccount56556@proton.me>

---------

Co-authored-by: dom <githubaccount56556@proton.me>
2026-06-26 10:51:41 +08:00

66 lines
1.6 KiB
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 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,
),
);
}
}