add: more contributors

This commit is contained in:
lollipopkit
2023-08-05 14:32:21 +08:00
parent 8f4f141a64
commit 432e3b1824
7 changed files with 165 additions and 120 deletions

View File

@@ -0,0 +1,5 @@
typedef GhId = String;
extension GhIdX on GhId {
String get url => 'https://github.com/$this ';
}

View File

@@ -2,8 +2,8 @@
class BuildData {
static const String name = "ServerBox";
static const int build = 416;
static const int build = 417;
static const String engine = "3.10.6";
static const String buildAt = "2023-08-05 12:53:08.311867";
static const int modifications = 6;
static const String buildAt = "2023-08-05 13:35:14.889342";
static const int modifications = 3;
}

View File

@@ -1,5 +1,7 @@
import 'package:flutter/services.dart';
import '../model/app/github_id.dart';
/// RegExp for number
final numReg = RegExp(r'\s{1,}');
@@ -16,3 +18,34 @@ const maxDebugLogLines = 100;
const pkgName = 'tech.lolli.toolbox';
const bgRunChannel = MethodChannel('$pkgName/app_retain');
const homeWidgetChannel = MethodChannel('$pkgName/home_widget');
// Thanks
// If you want to change the url, please open an issue.
const contributors = <GhId>{
'its-tom',
'RainSunMe',
'kalashnikov',
'azkadev',
'calvinweb',
'Liloupar'
};
const participants = <GhId>{
'jaychoubaby',
'fecture',
'Tao173',
'QingAnLe',
'wxdjs',
'Aeorq',
'allonmymind',
'LittleState',
'karuboniru',
'whosphp',
'Climit',
'dianso',
'Jasondeepny',
'kaliwell',
'ymxkiss',
'Ealrang',
'hange33',
'yuchen1204',
};

View File

@@ -3,18 +3,3 @@ const baseUrl = '$backendUrl/serverbox';
const joinQQGroupUrl = 'https://jq.qq.com/?_wv=1027&k=G0hUmPAq';
const myGithub = 'https://github.com/lollipopkit';
const appHelpUrl = '$myGithub/flutter_server_box#-help';
// Thanks
// If you want to change the url, please open an issue.
const thanksMap = {
'its-tom': 'https://github.com/its-tom',
'RainSunMe': 'https://github.com/RainSunMe',
'fecture': 'https://github.com/fecture',
'Tao173': 'https://github.com/Tao173',
'QingAnLe': 'https://github.com/QingAnLe',
'wxdjs': 'https://github.com/wxdjs',
'Aeorq': 'https://github.com/Aeorq',
'jaychoubaby': 'https://github.com/jaychoubaby',
'allonmymind': 'https://github.com/allonmymind',
'azkadev': 'https://github.com/azkadev'
};

View File

@@ -2,6 +2,7 @@ import 'package:after_layout/after_layout.dart';
import 'package:flutter/material.dart';
import 'package:flutter_gen/gen_l10n/l10n.dart';
import 'package:get_it/get_it.dart';
import 'package:toolbox/data/model/app/github_id.dart';
import 'package:toolbox/data/model/app/tab.dart';
import 'package:toolbox/data/provider/app.dart';
import 'package:toolbox/data/res/misc.dart';
@@ -197,92 +198,113 @@ class _HomePageState extends State<HomePage>
),
),
const SizedBox(height: 37),
Padding(
padding: const EdgeInsets.symmetric(horizontal: 17),
child: Column(
children: [
ListTile(
leading: const Icon(Icons.settings),
title: Text(_s.setting),
onTap: () => AppRoute(
const SettingPage(),
'Setting',
).go(context),
),
ListTile(
leading: const Icon(Icons.vpn_key),
title: Text(_s.privateKey),
onTap: () => AppRoute(
const PrivateKeysListPage(),
'private key list',
).go(context),
),
ListTile(
leading: const Icon(Icons.download),
title: Text(_s.download),
onTap: () => AppRoute(
const LocalStoragePage(),
'sftp local page',
).go(context),
),
ListTile(
leading: const Icon(Icons.import_export),
title: Text(_s.backup),
onTap: () => AppRoute(
BackupPage(),
'backup page',
).go(context),
),
ListTile(
leading: const Icon(Icons.code),
title: Text(_s.convert),
onTap: () => AppRoute(
const ConvertPage(),
'convert page',
).go(context),
),
ListTile(
leading: const Icon(Icons.text_snippet),
title: Text('${_s.about} & ${_s.feedback}'),
onTap: () {
showRoundDialog(
context: context,
title: Text(_s.about),
child: Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
UrlText(
text: _s.madeWithLove(myGithub),
replace: 'lollipopkit'),
UrlText(
text: _s.aboutThanks,
),
// Thanks
...thanksMap.keys.map(
(key) => UrlText(
text: thanksMap[key] ?? '',
replace: key,
),
)
],
),
actions: [
TextButton(
onPressed: () => openUrl(appHelpUrl),
child: Text(_s.feedback),
),
TextButton(
onPressed: () => showLicensePage(context: context),
child: Text(_s.license),
),
],
);
},
)
].map((e) => RoundRectCard(e)).toList(),
_buildTiles(),
],
),
);
}
Widget _buildTiles() {
return Padding(
padding: const EdgeInsets.symmetric(horizontal: 17),
child: Column(
children: [
ListTile(
leading: const Icon(Icons.settings),
title: Text(_s.setting),
onTap: () => AppRoute(
const SettingPage(),
'Setting',
).go(context),
),
ListTile(
leading: const Icon(Icons.vpn_key),
title: Text(_s.privateKey),
onTap: () => AppRoute(
const PrivateKeysListPage(),
'private key list',
).go(context),
),
ListTile(
leading: const Icon(Icons.download),
title: Text(_s.download),
onTap: () => AppRoute(
const LocalStoragePage(),
'sftp local page',
).go(context),
),
ListTile(
leading: const Icon(Icons.import_export),
title: Text(_s.backup),
onTap: () => AppRoute(
BackupPage(),
'backup page',
).go(context),
),
ListTile(
leading: const Icon(Icons.code),
title: Text(_s.convert),
onTap: () => AppRoute(
const ConvertPage(),
'convert page',
).go(context),
),
ListTile(
leading: const Icon(Icons.text_snippet),
title: Text('${_s.about} & ${_s.feedback}'),
onTap: _showAboutDialog,
)
].map((e) => RoundRectCard(e)).toList(),
),
);
}
void _showAboutDialog() {
showRoundDialog(
context: context,
title: Text(_s.about),
child: _buildAboutContent(),
actions: [
TextButton(
onPressed: () => openUrl(appHelpUrl),
child: Text(_s.feedback),
),
TextButton(
onPressed: () => showLicensePage(context: context),
child: Text(_s.license),
),
],
);
}
Widget _buildAboutContent() {
return SingleChildScrollView(
child: Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
UrlText(
text: _s.madeWithLove(myGithub),
replace: 'lollipopkit',
),
height13,
// Use [UrlText] for same text style
Text(_s.aboutThanks),
height13,
const Text('Contributors:'),
...contributors.map(
(name) => UrlText(
text: name.url,
replace: name,
),
),
const Text('Participants:'),
...participants.map(
(name) => UrlText(
text: name.url,
replace: name,
),
)
],
),
);