in example/lib/pages/settings/settings_page.dart [28:135]
Widget build(BuildContext context) {
// 数据结构定义
final List<SettingItem> items = [
SectionHeader(title: "通用"),
ButtonItem(
title: "链接设置",
onPressed: () {
NavigateUtil.pushWithRoute(context, PageRoutes.link);
},
),
ButtonItem(
title: "清除缓存",
onPressed: () {
AliPlayerWidgetController.clearCaches();
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(
content: Text("清除缓存成功"),
backgroundColor: Colors.green,
duration: Duration(seconds: 2),
),
);
},
),
SectionHeader(title: "配置"),
SelectionItem<ShortVideoResource>(
title: "短视频资源",
optionsLoader: _fetchVideoResources,
selectedOptionLoader: (options) async {
return _fetchSelectedVideoResource(options);
},
onSelected: (resource) {
SPManager.instance.saveString(
DemoConstants.keyDramaInfoListUrl,
resource.url,
);
},
displayFormatter: (resource) => resource.title,
),
SectionHeader(title: "调试"),
ButtonItem(
title: "调试页面",
onPressed: () {
NavigateUtil.pushWithRoute(context, PageRoutes.debug);
},
),
SectionHeader(title: "其它"),
TextItem(
title: "设备 UUID",
subtitleLoader: () async {
final version = await FlutterAliplayer.getDeviceUUID();
return version;
},
),
TextItem(
title: "SDK 版本号",
subtitleLoader: () async {
final sdkVersion = await FlutterAliplayer.getSDKVersion();
return sdkVersion;
},
),
TextItem(
title: "Widget 版本号",
subtitleLoader: () async {
final version = AliPlayerWidgetController.getWidgetVersion();
return version;
},
),
TextItem(
title: "Dart 版本号",
subtitleLoader: () async {
return Platform.version;
},
),
];
return Scaffold(
appBar: AppBar(
title: const Text("Settings"),
backgroundColor: Colors.orangeAccent,
),
body: ListView.builder(
itemCount: items.length,
itemBuilder: (context, index) {
final item = items[index];
if (item is SectionHeader) {
return _buildSectionHeader(item);
}
final Widget itemView;
if (item is SwitchItem) {
itemView = _buildSwitchItem(item);
} else if (item is SelectionItem) {
itemView = _buildSelectionItem(item);
} else if (item is ButtonItem) {
itemView = _buildButtonItem(item);
} else if (item is TextItem) {
itemView = _buildTextItem(item);
} else {
return const SizedBox.shrink();
}
return Container(
color: Colors.white,
child: itemView,
);
},
),
);
}