Improve animation by using SKSL

This commit is contained in:
Junyuan Feng
2022-04-15 19:21:40 +08:00
parent 4274e8bed1
commit c524db9f59
7 changed files with 48 additions and 31 deletions

1
android.sksl.json Normal file

File diff suppressed because one or more lines are too long

1
ios.sksl.json Normal file

File diff suppressed because one or more lines are too long

View File

@@ -354,7 +354,7 @@
buildSettings = { buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_MODULES = YES;
CURRENT_PROJECT_VERSION = 108; CURRENT_PROJECT_VERSION = 112;
DEVELOPMENT_TEAM = BA88US33G6; DEVELOPMENT_TEAM = BA88US33G6;
ENABLE_BITCODE = NO; ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist; INFOPLIST_FILE = Runner/Info.plist;
@@ -362,7 +362,7 @@
"$(inherited)", "$(inherited)",
"@executable_path/Frameworks", "@executable_path/Frameworks",
); );
MARKETING_VERSION = 1.0.108; MARKETING_VERSION = 1.0.112;
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
@@ -484,7 +484,7 @@
buildSettings = { buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_MODULES = YES;
CURRENT_PROJECT_VERSION = 108; CURRENT_PROJECT_VERSION = 112;
DEVELOPMENT_TEAM = BA88US33G6; DEVELOPMENT_TEAM = BA88US33G6;
ENABLE_BITCODE = NO; ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist; INFOPLIST_FILE = Runner/Info.plist;
@@ -492,7 +492,7 @@
"$(inherited)", "$(inherited)",
"@executable_path/Frameworks", "@executable_path/Frameworks",
); );
MARKETING_VERSION = 1.0.108; MARKETING_VERSION = 1.0.112;
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
@@ -508,7 +508,7 @@
buildSettings = { buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_MODULES = YES;
CURRENT_PROJECT_VERSION = 108; CURRENT_PROJECT_VERSION = 112;
DEVELOPMENT_TEAM = BA88US33G6; DEVELOPMENT_TEAM = BA88US33G6;
ENABLE_BITCODE = NO; ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist; INFOPLIST_FILE = Runner/Info.plist;
@@ -516,7 +516,7 @@
"$(inherited)", "$(inherited)",
"@executable_path/Frameworks", "@executable_path/Frameworks",
); );
MARKETING_VERSION = 1.0.108; MARKETING_VERSION = 1.0.112;
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";

View File

@@ -2,9 +2,9 @@
class BuildData { class BuildData {
static const String name = "ServerBox"; static const String name = "ServerBox";
static const int build = 111; static const int build = 112;
static const String engine = static const String engine =
"Flutter 2.10.4 • channel stable • https://github.com/flutter/flutter.git\nFramework • revision c860cba910 (13 days ago) • 2022-03-25 00:23:12 -0500\nEngine • revision 57d3bac3dd\nTools • Dart 2.16.2 • DevTools 2.9.2\n"; "Flutter 2.10.4 • channel stable • https://github.com/flutter/flutter.git\nFramework • revision c860cba910 (3 weeks ago) • 2022-03-25 00:23:12 -0500\nEngine • revision 57d3bac3dd\nTools • Dart 2.16.2 • DevTools 2.9.2\n";
static const String buildAt = "2022-04-07 19:53:12.283804"; static const String buildAt = "2022-04-15 19:07:21.221650";
static const int modifications = 0; static const int modifications = 7;
} }

View File

@@ -63,18 +63,18 @@ class _AptManagePageState extends State<AptManagePage>
apt.refreshInstalled(); apt.refreshInstalled();
return centerLoading; return centerLoading;
} }
if (!apt.isSU) {
return Center(
child: Text(
'Only supported as root. Not "${apt.whoami}".',
style: greyStyle,
),
);
}
return ListView( return ListView(
padding: const EdgeInsets.all(13), padding: const EdgeInsets.all(13),
children: children: [
[_buildUpdatePanel(apt)].map((e) => RoundRectCard(e)).toList(), const Padding(
padding: EdgeInsets.all(17),
child: Text(
'Experimental features.\nPlease report bugs on Github Issue.',
textAlign: TextAlign.center,
),
),
_buildUpdatePanel(apt)
].map((e) => RoundRectCard(e)).toList(),
); );
}), }),
); );

View File

@@ -104,12 +104,12 @@ class _MyHomePageState extends State<MyHomePage>
childDecoration: const BoxDecoration( childDecoration: const BoxDecoration(
// NOTICE: Uncomment if you want to add shadow behind the page. // NOTICE: Uncomment if you want to add shadow behind the page.
// Keep in mind that it may cause animation jerks. // Keep in mind that it may cause animation jerks.
boxShadow: <BoxShadow>[ // boxShadow: <BoxShadow>[
BoxShadow( // BoxShadow(
color: Colors.black12, // color: Colors.black12,
blurRadius: 0.0, // blurRadius: 0.0,
), // ),
], // ],
borderRadius: BorderRadius.all(Radius.circular(16)), borderRadius: BorderRadius.all(Radius.circular(16)),
), ),
drawer: _buildDrawer(), drawer: _buildDrawer(),
@@ -278,7 +278,11 @@ class _MyHomePageState extends State<MyHomePage>
} }
String _buildVersionStr() { String _buildVersionStr() {
return 'Ver: 1.0.${BuildData.build}'; var mod = '';
if (BuildData.modifications != 0) {
mod = '(+${BuildData.modifications})';
}
return 'Ver: 1.0.${BuildData.build}$mod';
} }
@override @override

View File

@@ -5,6 +5,7 @@ import 'dart:convert';
import 'dart:io'; import 'dart:io';
const appName = 'ServerBox'; const appName = 'ServerBox';
const skslFileSuffix = '.sksl.json';
Future<int> getGitCommitCount() async { Future<int> getGitCommitCount() async {
final result = await Process.run('git', ['log', '--oneline']); final result = await Process.run('git', ['log', '--oneline']);
@@ -90,7 +91,8 @@ Future<void> flutterBuild(String source, String target, bool isAndroid) async {
isAndroid ? 'apk' : 'ipa', isAndroid ? 'apk' : 'ipa',
'--target-platform=android-arm64', '--target-platform=android-arm64',
'--build-number=$build', '--build-number=$build',
'--build-name=1.0.$build' '--build-name=1.0.$build',
'--bundle-sksl-path=${isAndroid ? 'android' : 'ios'}$skslFileSuffix',
]; ];
if (!isAndroid) args.removeAt(2); if (!isAndroid) args.removeAt(2);
print('Building with args: ${args.join(' ')}'); print('Building with args: ${args.join(' ')}');
@@ -100,7 +102,16 @@ Future<void> flutterBuild(String source, String target, bool isAndroid) async {
if (exitCode == 0) { if (exitCode == 0) {
target = target.replaceFirst('build', build.toString()); target = target.replaceFirst('build', build.toString());
print('Copying from $source to $target'); print('Copying from $source to $target');
await File(source).copy(target); if (isAndroid) {
await File(source).copy(target);
} else {
final result = await Process.run('cp', ['-r', source, target]);
if (result.exitCode != 0) {
print(result.stderr);
exit(1);
}
}
print('Done.'); print('Done.');
} else { } else {
print(buildResult.stderr.toString()); print(buildResult.stderr.toString());
@@ -112,8 +123,8 @@ Future<void> flutterBuild(String source, String target, bool isAndroid) async {
} }
Future<void> flutterBuildIOS() async { Future<void> flutterBuildIOS() async {
await flutterBuild('./build/ios/iphoneos/ToastTiku.app', await flutterBuild('./build/ios/archive/Runner.xcarchive',
'./release/${appName}_build.app', false); './release/${appName}_build.xcarchive', false);
} }
Future<void> flutterBuildAndroid() async { Future<void> flutterBuildAndroid() async {