Files
FlutterUnit/lib/views/pages/setting/setting_page.dart
2021-04-03 19:41:09 +08:00

80 lines
2.7 KiB
Dart

import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_unit/app/router.dart';
import 'package:flutter_unit/app/res/toly_icon.dart';
import 'package:flutter_unit/blocs/global/global_bloc.dart';
import 'package:flutter_unit/blocs/global/global_event.dart';
import 'package:flutter_unit/blocs/global/global_state.dart';
class SettingPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('主题设置'),
),
body: ListView(
children: <Widget>[
ListTile(
leading: Icon(
Icons.palette,
color: Theme.of(context).primaryColor,
),
title: Text('主题色设置'),
trailing: _nextIcon(context),
onTap: () => Navigator.of(context).pushNamed(UnitRouter.theme_color_setting),
),
Divider(),
ListTile(
leading: Icon(
Icons.translate,
color: Theme.of(context).primaryColor,
),
title: Text('字体设置'),
trailing: _nextIcon(context),
onTap: () => Navigator.of(context).pushNamed(UnitRouter.font_setting),
),
// Divider(),
// ListTile(
// leading: Icon(
// TolyIcon.icon_item,
// color: Theme.of(context).primaryColor,
// ),
// title: Text('item样式设置'),
// trailing: _nextIcon(context),
// onTap: () => Navigator.of(context).pushNamed(Router.item_style_setting),
// ),
Divider(),
ListTile(
leading: Icon(
TolyIcon.icon_code,
color: Theme.of(context).primaryColor,
),
title: Text('代码高亮样式'),
trailing: _nextIcon(context),
onTap: () => Navigator.of(context).pushNamed(UnitRouter.code_style_setting),
),
Divider(),
_buildShowBg(context),
],
),
);
}
Widget _buildShowBg(BuildContext context) =>
BlocBuilder<GlobalBloc, GlobalState>(
builder: (_, state) => SwitchListTile(
value: state.showBackGround,
secondary: Icon(
TolyIcon.icon_background,
color: Theme.of(context).primaryColor,
),
title: Text('显示背景'),
onChanged: (show) => BlocProvider.of<GlobalBloc>(context).add(EventSwitchShowBg(show)),
));
Widget _nextIcon(BuildContext context) =>
Icon(Icons.chevron_right, color: Theme.of(context).primaryColor);
}