Skip to content

Commit

Permalink
bump version 0.2.0
Browse files Browse the repository at this point in the history
  • Loading branch information
orzogc committed Dec 4, 2022
1 parent 96c1177 commit 3c43fd3
Show file tree
Hide file tree
Showing 10 changed files with 90 additions and 46 deletions.
13 changes: 9 additions & 4 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,19 @@
# 更新记录
## v0.2.0(未发布)
## v0.2.0
- 屏蔽后不再刷新页面
- 实现简单的分享功能(仅复制链接)
- 可以设置恢复标签页时是否恢复时间线/版块的页数(高级设置,默认不恢复)
- 可以设置是否下一次启动应用时显示用户指导(高级设置)
- 可以设置在标签页列表中滑动标签以关闭标签页(基本设置,默认不开启)
- 新增界面设置
- 可以设置是否显示底边栏(界面基本设置,除iOS外默认不开启,iOS强制开启)
- 新增界面设置,部分设置移到界面基本设置里
- 可以是否显示底边栏(界面基本设置,除iOS外默认不开启,iOS强制开启)
- 可以设置向下滑动时是否自动隐藏底边栏(界面基本设置)
- 新增幕布界面,可以滑动标题栏打开标签页和版块列表(界面基本设置,默认不开启)
- 可以设置串文字大小、粗细、行高和文字间距(界面设置)
- 可以设置幕布的滑动范围(界面基本设置)
- 可以设置向下滑动时是否自动隐藏悬浮球(界面基本设置)
- 显示底边栏或启用幕布时可以在左侧边缘滑动返回页面,可以设置滑动范围(界面基本设置)
- 可以设置显示底边栏或启用幕布时是否同时显示标签页列表和版块列表(界面基本设置)
- 新增设置串文字大小、粗细、行高和文字间距(界面设置->串字体设置)
- 将原底边浏览栏(历史记录和黑名单页面)移到标题栏下面
- 进一步修复字体问题
- 修复一些bug
Expand Down
Binary file added assets/image/reward_qrcode.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
23 changes: 16 additions & 7 deletions lib/app/modules/post_list.dart
Original file line number Diff line number Diff line change
Expand Up @@ -1113,7 +1113,7 @@ class _TabAndForumListButton extends StatelessWidget {
_TabAndForumListController._controller;

static const EdgeInsets _listPadding =
EdgeInsets.only(bottom: _BottomBar._height);
EdgeInsets.only(bottom: BottomBar.height);

static void _showTabAndForumList([_TabAndForumListButtonType? buttonType]) {
final settings = SettingsService.to;
Expand Down Expand Up @@ -1205,17 +1205,26 @@ class _TabAndForumListButton extends StatelessWidget {
}
}

class _BottomBar extends StatelessWidget {
static const double _height = 48.0;
void showFloatingButtonAndBottomBar() =>
PostListController.setScrollPosition(ScrollDirection.forward);

class BottomBar extends StatelessWidget {
static const double height = 48.0;

static EditPostBottomSheetController get _editPostController =>
BottomSheetController.editPostController;

static BottomSheetController get _tabAndForumListController =>
BottomSheetController._tabAndForumListController;

static bool get isShowed =>
!(_editPostController.isShowed ||
(!_tabAndForumListController.isShowed &&
PostListController._isScrollingDown)) &&
SettingsService.to.autoHideBottomBar;

// ignore: unused_element
const _BottomBar({super.key});
const BottomBar({super.key});

void _closeBottomSheet() => _tabAndForumListController.close();

Expand All @@ -1224,7 +1233,7 @@ class _BottomBar extends StatelessWidget {
final settings = SettingsService.to;
final color = Theme.of(context).colorScheme.onPrimary;
final hideOffset =
(_height + MediaQuery.of(context).padding.bottom) / _height;
(height + MediaQuery.of(context).padding.bottom) / height;

final Widget searchButton = SearchButton(
iconColor: color,
Expand Down Expand Up @@ -1269,7 +1278,7 @@ class _BottomBar extends StatelessWidget {

final Widget bottomAppBar = Container(
color: Theme.of(context).primaryColor,
height: _height,
height: height,
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
Expand Down Expand Up @@ -1604,7 +1613,7 @@ class _PostListViewState extends State<PostListView>
? ValueListenableBuilder<Box>(
valueListenable:
settings.compactTabAndForumListListenable,
builder: (context, value, child) => _BottomBar(
builder: (context, value, child) => BottomBar(
key: ValueKey<bool>(settings.compactTabAndForumList),
),
)
Expand Down
2 changes: 1 addition & 1 deletion lib/app/modules/post_settings.dart
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ class _Restore extends StatelessWidget {
child: const Text('恢复默认数值'),
),
Text(
'更改后需要重启应用',
'点击右上角更改,需要重启应用',
style: Theme.of(context)
.textTheme
.bodyMedium
Expand Down
22 changes: 17 additions & 5 deletions lib/app/modules/settings.dart
Original file line number Diff line number Diff line change
Expand Up @@ -45,13 +45,24 @@ class _Feedback extends StatelessWidget {
);
}

class _AuthorSponsor extends StatelessWidget {
class _AuthorQRCodeSponsor extends StatelessWidget {
// ignore: unused_element
const _AuthorSponsor({super.key});
const _AuthorQRCodeSponsor({super.key});

@override
Widget build(BuildContext context) => ListTile(
title: const Text('赞助客户端作者'),
title: const Text('赞助客户端作者(微信赞赏码)'),
onTap: () => Get.dialog(const RewardQRCode()),
);
}

class _AuthorUrlSponsor extends StatelessWidget {
// ignore: unused_element
const _AuthorUrlSponsor({super.key});

@override
Widget build(BuildContext context) => ListTile(
title: const Text('赞助客户端作者(爱发电)'),
subtitle: const Text(Urls.authorSponsor),
onTap: () => launchURL(Urls.authorSponsor),
);
Expand Down Expand Up @@ -128,13 +139,14 @@ class SettingsView extends StatelessWidget {
ListTile(title: Text('饼干'), onTap: AppRoutes.toUser),
ListTile(title: Text('黑名单'), onTap: AppRoutes.toBlacklist),
ListTile(title: Text('基本设置'), onTap: AppRoutes.toBasicSettings),
ListTile(title: Text('界面设置'), onTap: AppRoutes.toUISettings),
ListTile(
title: Text('高级设置'), onTap: AppRoutes.toAdvancedSettings),
ListTile(title: Text('界面设置'), onTap: AppRoutes.toUISettings),
_DarkMode(),
_Feedback(),
ListTile(title: Text('客户端作者'), subtitle: Text('Orzogc')),
_AuthorSponsor(),
_AuthorQRCodeSponsor(),
_AuthorUrlSponsor(),
_AppSource(),
_AppLicense(),
_AppVersion(),
Expand Down
5 changes: 3 additions & 2 deletions lib/app/utils/image.dart
Original file line number Diff line number Diff line change
Expand Up @@ -60,11 +60,12 @@ Image? getImage(Uint8List imageData) {
return null;
}

Future<bool> saveImageData(Uint8List imageData) async {
// 保存成功返回`true`,失败返回`false`
Future<bool> saveImageData(Uint8List imageData, [String? imageName]) async {
final savePath = ImageService.savePath;

try {
final filename = _imageFilename(imageData);
final filename = imageName ?? _imageFilename(imageData);

if (GetPlatform.isIOS) {
if (ImageService.to.hasPhotoLibraryPermission) {
Expand Down
6 changes: 5 additions & 1 deletion lib/app/widgets/buttons.dart
Original file line number Diff line number Diff line change
Expand Up @@ -267,9 +267,13 @@ class _SponsorDialog extends StatelessWidget {

return SimpleDialog(
children: [
SimpleDialogOption(
onPressed: () => Get.dialog(const RewardQRCode()),
child: Text('赞助客户端作者(微信赞赏码)', style: textStyle),
),
SimpleDialogOption(
onPressed: () => launchURL(Urls.authorSponsor),
child: Text('赞助客户端作者', style: textStyle),
child: Text('赞助客户端作者(爱发电)', style: textStyle),
),
SimpleDialogOption(
onPressed: () => launchURL(Urls.xdnmbSponsor),
Expand Down
59 changes: 34 additions & 25 deletions lib/app/widgets/dialog.dart
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:get/get.dart';
import 'package:hive/hive.dart';
import 'package:xdnmb_api/xdnmb_api.dart';
import 'package:xdnmb_api/xdnmb_api.dart' hide Image;

import '../data/models/controller.dart';
import '../data/models/forum.dart';
Expand All @@ -12,6 +12,7 @@ import '../data/services/forum.dart';
import '../data/services/persistent.dart';
import '../data/services/settings.dart';
import '../data/services/xdnmb_client.dart';
import '../modules/post_list.dart';
import '../routes/routes.dart';
import '../utils/exception.dart';
import '../utils/extensions.dart';
Expand All @@ -28,30 +29,13 @@ import 'forum_name.dart';
import 'scroll.dart';
import 'thread.dart';

Future<T?> postListDialog<T>(
Widget widget, {
int? index,
bool barrierDismissible = true,
Color? barrierColor,
bool useSafeArea = true,
Object? arguments,
Duration? transitionDuration,
Curve? transitionCurve,
String? name,
RouteSettings? routeSettings,
}) =>
Get.dialog<T>(
widget,
barrierDismissible: barrierDismissible,
barrierColor: barrierColor,
useSafeArea: useSafeArea,
navigatorKey: postListkey(index),
arguments: arguments,
transitionDuration: transitionDuration,
transitionCurve: transitionCurve,
name: name,
routeSettings: routeSettings,
);
Future<T?> postListDialog<T>(Widget widget, {int? index}) => Get.dialog<T>(
Obx(() => BottomBar.isShowed
? Container(
margin: const EdgeInsets.only(bottom: BottomBar.height),
child: widget)
: widget),
navigatorKey: postListkey(index));

Future<T?> showNoticeDialog<T>(
{bool showCheckbox = false, bool isAutoUpdate = false}) =>
Expand Down Expand Up @@ -656,3 +640,28 @@ class DoubleRangeDialog extends StatelessWidget {
);
}
}

class RewardQRCode extends StatelessWidget {
const RewardQRCode({super.key});

@override
Widget build(BuildContext context) => AlertDialog(
actionsPadding: const EdgeInsets.only(right: 20.0, bottom: 20.0),
title: const Text('微信赞赏码'),
content:
const Image(image: AssetImage('assets/image/reward_qrcode.png')),
actions: [
TextButton(
onPressed: () async {
final data = await DefaultAssetBundle.of(context)
.load('assets/image/reward_qrcode.png');
await saveImageData(
data.buffer.asUint8List(), 'reward_qrcode.png');

Get.back();
},
child: const Text('保存'),
),
],
);
}
1 change: 1 addition & 0 deletions lib/app/widgets/forum.dart
Original file line number Diff line number Diff line change
Expand Up @@ -267,6 +267,7 @@ class _ForumBodyState extends State<ForumBody> {
WidgetsBinding.instance.addPostFrameCallback((timeStamp) async {
if (mounted) {
BackdropController.controller.hideBackLayer();
showFloatingButtonAndBottomBar();
scaffold.closeDrawer();
scaffold.closeEndDrawer();
await Future.delayed(const Duration(milliseconds: 300));
Expand Down
5 changes: 4 additions & 1 deletion pubspec.yaml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
name: xdnmb
description: An app for nmbxd.com.
publish_to: 'none'
version: 0.2.0-alpha+3
version: 0.2.0+4

environment:
sdk: ">=2.18.4 <3.0.0"
Expand Down Expand Up @@ -78,6 +78,9 @@ flutter:
# https://letsencrypt.org/certs/lets-encrypt-r3.pem
- assets/ca/lets-encrypt-r3.pem

# Reward QR code
- assets/image/reward_qrcode.png

fonts:
# Icon from https://www.fluttericon.com/
- family: DiceIcon
Expand Down

0 comments on commit 3c43fd3

Please sign in to comment.