🍱 Update app icon for v1.2.0
@ -7,6 +7,9 @@
|
||||
|
||||
# The following line activates a set of recommended lints for Flutter apps,
|
||||
# packages, and plugins designed to encourage good coding practices.
|
||||
analyzer:
|
||||
errors:
|
||||
use_build_context_synchronously: ignore
|
||||
include: package:flutter_lints/flutter.yaml
|
||||
|
||||
linter:
|
||||
|
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 3.0 KiB |
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.9 KiB |
Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 4.1 KiB |
Before Width: | Height: | Size: 5.0 KiB After Width: | Height: | Size: 6.3 KiB |
Before Width: | Height: | Size: 6.8 KiB After Width: | Height: | Size: 8.5 KiB |
Before Width: | Height: | Size: 537 KiB |
BIN
assets/icon-w-shadow.png
Normal file
After Width: | Height: | Size: 574 KiB |
BIN
assets/icon.png
Before Width: | Height: | Size: 53 KiB After Width: | Height: | Size: 62 KiB |
BIN
assets/logo.png
Before Width: | Height: | Size: 61 KiB After Width: | Height: | Size: 80 KiB |
@ -654,7 +654,7 @@
|
||||
730D64942C4AC4D0005A1975 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
|
||||
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = AppIcon;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
|
||||
CLANG_ENABLE_OBJC_WEAK = YES;
|
||||
@ -694,7 +694,7 @@
|
||||
730D64952C4AC4D0005A1975 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
|
||||
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = AppIcon;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
|
||||
CLANG_ENABLE_OBJC_WEAK = YES;
|
||||
@ -731,7 +731,7 @@
|
||||
730D64962C4AC4D0005A1975 /* Profile */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
|
||||
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = AppIcon;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
|
||||
CLANG_ENABLE_OBJC_WEAK = YES;
|
||||
|
Before Width: | Height: | Size: 42 KiB After Width: | Height: | Size: 52 KiB |
Before Width: | Height: | Size: 575 B After Width: | Height: | Size: 641 B |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 2.5 KiB |
Before Width: | Height: | Size: 868 B After Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 2.4 KiB |
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 3.8 KiB |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 3.4 KiB |
Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 5.2 KiB |
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 2.0 KiB |
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 4.3 KiB |
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 2.4 KiB |
Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 4.9 KiB |
Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 5.2 KiB |
Before Width: | Height: | Size: 6.4 KiB After Width: | Height: | Size: 8.0 KiB |
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 3.0 KiB |
Before Width: | Height: | Size: 5.0 KiB After Width: | Height: | Size: 6.3 KiB |
Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 3.3 KiB |
Before Width: | Height: | Size: 5.3 KiB After Width: | Height: | Size: 6.7 KiB |
Before Width: | Height: | Size: 5.9 KiB After Width: | Height: | Size: 7.4 KiB |
@ -83,7 +83,6 @@ class AttachmentProvider extends GetConnect {
|
||||
int id,
|
||||
String alt,
|
||||
String usage, {
|
||||
double? ratio,
|
||||
bool isMature = false,
|
||||
}) async {
|
||||
final AuthProvider auth = Get.find();
|
||||
@ -92,9 +91,6 @@ class AttachmentProvider extends GetConnect {
|
||||
final client = auth.configureClient('files');
|
||||
|
||||
var resp = await client.put('/attachments/$id', {
|
||||
'metadata': {
|
||||
if (ratio != null) 'ratio': ratio,
|
||||
},
|
||||
'alt': alt,
|
||||
'usage': usage,
|
||||
'is_mature': isMature,
|
||||
|
@ -137,7 +137,7 @@ class PostCreatePopup extends StatelessWidget {
|
||||
final List<dynamic> actionList = [
|
||||
(
|
||||
icon: const Icon(Icons.edit_square),
|
||||
label: 'postEditor'.tr,
|
||||
label: 'postEditorModeStory'.tr,
|
||||
onTap: () {
|
||||
Navigator.pop(context);
|
||||
AppRouter.instance.pushNamed('postEditor').then((val) {
|
||||
|
@ -134,7 +134,7 @@ class _PostPublishScreenState extends State<PostPublishScreen> {
|
||||
child: Scaffold(
|
||||
appBar: AppBar(
|
||||
leading: AppBarLeadingButton.adaptive(context),
|
||||
title: AppBarTitle('postPublish'.tr),
|
||||
title: AppBarTitle('postEditorModeStory'.tr),
|
||||
centerTitle: false,
|
||||
toolbarHeight: SolianTheme.toolbarHeight(context),
|
||||
actions: [
|
||||
|
@ -32,7 +32,9 @@ abstract class SolianTheme {
|
||||
brightness: brightness,
|
||||
useMaterial3: true,
|
||||
colorScheme: ColorScheme.fromSeed(
|
||||
brightness: brightness, seedColor: Colors.indigo),
|
||||
brightness: brightness,
|
||||
seedColor: const Color.fromRGBO(103, 96, 193, 1),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@ -5,7 +5,7 @@ import 'package:solian/translations/zh_cn.dart';
|
||||
class SolianMessages extends Translations {
|
||||
@override
|
||||
Map<String, Map<String, String>> get keys => {
|
||||
'en_US': messagesEnglish,
|
||||
'zh_CN': simplifiedChineseMessages,
|
||||
'en_US': i18nEnglish,
|
||||
'zh_CN': i18nSimplifiedChinese,
|
||||
};
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
const messagesEnglish = {
|
||||
const i18nEnglish = {
|
||||
'done': 'Done',
|
||||
'hide': 'Hide',
|
||||
'okay': 'Okay',
|
||||
@ -97,7 +97,9 @@ const messagesEnglish = {
|
||||
'postPinned': 'Pinned',
|
||||
'postListNews': 'News',
|
||||
'postListShuffle': 'Random',
|
||||
'postEditor': 'Create new post',
|
||||
'postEditorModeStory': 'Post a post',
|
||||
'postEditorModeArticle': 'Post an article',
|
||||
'postEditor': 'Post editor',
|
||||
'articleEditor': 'Create new article',
|
||||
'articleDetail': 'Article details',
|
||||
'draftBoxOpen': 'Open draft box',
|
||||
|
@ -1,4 +1,4 @@
|
||||
const simplifiedChineseMessages = {
|
||||
const i18nSimplifiedChinese = {
|
||||
'done': '完成',
|
||||
'hide': '隐藏',
|
||||
'okay': '确认',
|
||||
@ -89,7 +89,9 @@ const simplifiedChineseMessages = {
|
||||
'pinPost': '置顶本帖',
|
||||
'unpinPost': '取消置顶本帖',
|
||||
'postPinned': '已置顶',
|
||||
'postEditor': '发个帖子',
|
||||
'postEditorModeStory': '发个帖子',
|
||||
'postEditorModeArticle': '撰写文章',
|
||||
'postEditor': '帖子编辑器',
|
||||
'articleEditor': '撰写文章',
|
||||
'articleDetail': '文章详情',
|
||||
'draftBoxOpen': '打开草稿箱',
|
||||
|
@ -108,7 +108,6 @@ class _AttachmentItemImage extends StatelessWidget {
|
||||
final Function? onHide;
|
||||
|
||||
const _AttachmentItemImage({
|
||||
super.key,
|
||||
required this.parentId,
|
||||
required this.item,
|
||||
required this.showBadge,
|
||||
@ -215,7 +214,7 @@ class _AttachmentItemImage extends StatelessWidget {
|
||||
class _AttachmentItemVideo extends StatefulWidget {
|
||||
final Attachment item;
|
||||
|
||||
const _AttachmentItemVideo({super.key, required this.item});
|
||||
const _AttachmentItemVideo({required this.item});
|
||||
|
||||
@override
|
||||
State<_AttachmentItemVideo> createState() => _AttachmentItemVideoState();
|
||||
|
@ -361,7 +361,7 @@ class _AttachmentPublishPopupState extends State<AttachmentPublishPopup> {
|
||||
alignment: WrapAlignment.center,
|
||||
runAlignment: WrapAlignment.center,
|
||||
children: [
|
||||
if (PlatformInfo.isDesktop)
|
||||
if (PlatformInfo.isDesktop || PlatformInfo.isIOS || PlatformInfo.isWeb)
|
||||
ElevatedButton.icon(
|
||||
icon: const Icon(Icons.paste),
|
||||
label: Text('attachmentAddClipboard'.tr),
|
||||
@ -426,12 +426,10 @@ class AttachmentEditorDialog extends StatefulWidget {
|
||||
}
|
||||
|
||||
class _AttachmentEditorDialogState extends State<AttachmentEditorDialog> {
|
||||
final _ratioController = TextEditingController();
|
||||
final _altController = TextEditingController();
|
||||
|
||||
bool _isBusy = false;
|
||||
bool _isMature = false;
|
||||
bool _hasAspectRatio = false;
|
||||
|
||||
Future<Attachment?> updateAttachment() async {
|
||||
final AttachmentProvider provider = Get.find();
|
||||
@ -442,9 +440,6 @@ class _AttachmentEditorDialogState extends State<AttachmentEditorDialog> {
|
||||
widget.item.id,
|
||||
_altController.value.text,
|
||||
widget.item.usage,
|
||||
ratio: _hasAspectRatio
|
||||
? (double.tryParse(_ratioController.value.text) ?? 1)
|
||||
: null,
|
||||
isMature: _isMature,
|
||||
);
|
||||
|
||||
@ -476,13 +471,6 @@ class _AttachmentEditorDialogState extends State<AttachmentEditorDialog> {
|
||||
void syncWidget() {
|
||||
_isMature = widget.item.isMature;
|
||||
_altController.text = widget.item.alt;
|
||||
|
||||
if (['image', 'video']
|
||||
.contains(widget.item.mimetype.split('/').firstOrNull)) {
|
||||
_ratioController.text =
|
||||
widget.item.metadata?['ratio']?.toString() ?? 1.toString();
|
||||
_hasAspectRatio = true;
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
@ -517,61 +505,6 @@ class _AttachmentEditorDialogState extends State<AttachmentEditorDialog> {
|
||||
onTapOutside: (_) =>
|
||||
FocusManager.instance.primaryFocus?.unfocus(),
|
||||
),
|
||||
const SizedBox(height: 16),
|
||||
TextField(
|
||||
readOnly: !_hasAspectRatio,
|
||||
controller: _ratioController,
|
||||
decoration: InputDecoration(
|
||||
isDense: true,
|
||||
prefixIcon: const Icon(Icons.aspect_ratio),
|
||||
border: const OutlineInputBorder(),
|
||||
labelText: 'aspectRatio'.tr,
|
||||
),
|
||||
onTapOutside: (_) =>
|
||||
FocusManager.instance.primaryFocus?.unfocus(),
|
||||
),
|
||||
const SizedBox(height: 5),
|
||||
SingleChildScrollView(
|
||||
scrollDirection: Axis.horizontal,
|
||||
child: Wrap(
|
||||
spacing: 6,
|
||||
runSpacing: 0,
|
||||
children: [
|
||||
ActionChip(
|
||||
avatar: Icon(Icons.square_rounded,
|
||||
color: Theme.of(context).colorScheme.onSurfaceVariant),
|
||||
label: Text('aspectRatioSquare'.tr),
|
||||
onPressed: () {
|
||||
if (_hasAspectRatio) {
|
||||
setState(() => _ratioController.text = '1');
|
||||
}
|
||||
},
|
||||
),
|
||||
ActionChip(
|
||||
avatar: Icon(Icons.portrait,
|
||||
color: Theme.of(context).colorScheme.onSurfaceVariant),
|
||||
label: Text('aspectRatioPortrait'.tr),
|
||||
onPressed: () {
|
||||
if (_hasAspectRatio) {
|
||||
setState(
|
||||
() => _ratioController.text = (9 / 16).toString());
|
||||
}
|
||||
},
|
||||
),
|
||||
ActionChip(
|
||||
avatar: Icon(Icons.landscape,
|
||||
color: Theme.of(context).colorScheme.onSurfaceVariant),
|
||||
label: Text('aspectRatioLandscape'.tr),
|
||||
onPressed: () {
|
||||
if (_hasAspectRatio) {
|
||||
setState(
|
||||
() => _ratioController.text = (16 / 9).toString());
|
||||
}
|
||||
},
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
Card(
|
||||
child: CheckboxListTile(
|
||||
shape: const RoundedRectangleBorder(
|
||||
|
Before Width: | Height: | Size: 160 KiB After Width: | Height: | Size: 176 KiB |
Before Width: | Height: | Size: 8.0 KiB After Width: | Height: | Size: 7.7 KiB |
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 589 B |
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 52 KiB After Width: | Height: | Size: 56 KiB |
Before Width: | Height: | Size: 4.0 KiB After Width: | Height: | Size: 3.3 KiB |
@ -2,7 +2,7 @@ name: solian
|
||||
description: "The Solar Network App"
|
||||
publish_to: "none"
|
||||
|
||||
version: 1.2.0
|
||||
version: 1.2.0+1
|
||||
|
||||
environment:
|
||||
sdk: ">=3.3.4 <4.0.0"
|
||||
@ -83,16 +83,16 @@ flutter_launcher_icons:
|
||||
min_sdk_android: 21
|
||||
web:
|
||||
generate: true
|
||||
image_path: "assets/icon-padded.png"
|
||||
image_path: "assets/icon-w-shadow.png"
|
||||
background_color: "#ffffff"
|
||||
theme_color: "#4b5094"
|
||||
windows:
|
||||
generate: true
|
||||
image_path: "assets/icon-padded.png"
|
||||
image_path: "assets/icon-w-shadow.png"
|
||||
icon_size: 256
|
||||
macos:
|
||||
generate: true
|
||||
image_path: "assets/icon-padded.png"
|
||||
image_path: "assets/icon-w-shadow.png"
|
||||
|
||||
msix_config:
|
||||
protocol_activation: solink
|
||||
|
BIN
web/favicon.png
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 589 B |
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 52 KiB After Width: | Height: | Size: 56 KiB |
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 52 KiB After Width: | Height: | Size: 56 KiB |
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 20 KiB |