ok i guess i'm ready for a beta test of new design
This commit is contained in:
parent
0dae5a73d6
commit
c1b9db3b15
|
@ -4,9 +4,9 @@
|
|||
/// To regenerate, run: `dart run slang`
|
||||
///
|
||||
/// Locales: 2
|
||||
/// Strings: 1526 (763 per locale)
|
||||
/// Strings: 1528 (764 per locale)
|
||||
///
|
||||
/// Built on 2024-12-12 at 15:53 UTC
|
||||
/// Built on 2024-12-12 at 21:30 UTC
|
||||
|
||||
// coverage:ignore-file
|
||||
// ignore_for_file: type=lint
|
||||
|
@ -771,6 +771,7 @@ class _StringsRankViewEn {
|
|||
String underpopulated({required Object players}) => 'Underpopulated by a ${players}';
|
||||
String get PlayersEqualSupposedToBe => 'cute';
|
||||
String get avgStats => 'Average Stats';
|
||||
String avgForRank({required Object rank}) => 'Average for ${rank} rank';
|
||||
String get avgNerdStats => 'Average Nerd Stats';
|
||||
String get minimums => 'Minimums';
|
||||
String get maximums => 'Maximums';
|
||||
|
@ -2309,6 +2310,7 @@ class _StringsRankViewRuRu implements _StringsRankViewEn {
|
|||
@override String underpopulated({required Object players}) => 'Не хватает ${players}';
|
||||
@override String get PlayersEqualSupposedToBe => 'лол';
|
||||
@override String get avgStats => 'Средние значения';
|
||||
@override String avgForRank({required Object rank}) => 'Среднее для ${rank} ранга';
|
||||
@override String get avgNerdStats => 'Средние задротские значения';
|
||||
@override String get minimums => 'Минимумы';
|
||||
@override String get maximums => 'Максимумы';
|
||||
|
@ -3419,6 +3421,7 @@ extension on Translations {
|
|||
case 'rankView.underpopulated': return ({required Object players}) => 'Underpopulated by a ${players}';
|
||||
case 'rankView.PlayersEqualSupposedToBe': return 'cute';
|
||||
case 'rankView.avgStats': return 'Average Stats';
|
||||
case 'rankView.avgForRank': return ({required Object rank}) => 'Average for ${rank} rank';
|
||||
case 'rankView.avgNerdStats': return 'Average Nerd Stats';
|
||||
case 'rankView.minimums': return 'Minimums';
|
||||
case 'rankView.maximums': return 'Maximums';
|
||||
|
@ -4231,6 +4234,7 @@ extension on _StringsRuRu {
|
|||
case 'rankView.underpopulated': return ({required Object players}) => 'Не хватает ${players}';
|
||||
case 'rankView.PlayersEqualSupposedToBe': return 'лол';
|
||||
case 'rankView.avgStats': return 'Средние значения';
|
||||
case 'rankView.avgForRank': return ({required Object rank}) => 'Среднее для ${rank} ранга';
|
||||
case 'rankView.avgNerdStats': return 'Средние задротские значения';
|
||||
case 'rankView.minimums': return 'Минимумы';
|
||||
case 'rankView.maximums': return 'Максимумы';
|
||||
|
|
|
@ -35,6 +35,7 @@ import 'package:tetra_stats/services/sqlite_db_controller.dart';
|
|||
import 'package:csv/csv.dart';
|
||||
|
||||
const String dbName = "TetraStats.db";
|
||||
const String webVersionDomain = "tsbeta.dan63.by";
|
||||
const String tetrioUsersTable = "tetrioUsers";
|
||||
const String tetrioUsersToTrackTable = "tetrioUsersToTrack";
|
||||
const String tetraLeagueMatchesTable = "tetrioAlphaLeagueMathces";
|
||||
|
@ -289,7 +290,7 @@ class TetrioService extends DB {
|
|||
// If failed, actually trying to retrieve
|
||||
Uri url;
|
||||
if (kIsWeb) { // Web version sends every request through my php script at the same domain, where Tetra Stats located because of CORS
|
||||
url = Uri.https('ts.dan63.by', 'oskware_bridge.php', {"endpoint": "tetrioReplay", "replayid": replayID});
|
||||
url = Uri.https(webVersionDomain, 'oskware_bridge.php', {"endpoint": "tetrioReplay", "replayid": replayID});
|
||||
} else { // Actually going to hit inoue
|
||||
url = Uri.https('inoue.szy.lol', '/api/replay/$replayID');
|
||||
}
|
||||
|
@ -385,7 +386,7 @@ class TetrioService extends DB {
|
|||
|
||||
Uri url;
|
||||
if (kIsWeb) {
|
||||
url = Uri.https('ts.dan63.by', 'oskware_bridge.php', {"endpoint": "singleplayerStream", "user": userID.toLowerCase().trim(), "stream": stream});
|
||||
url = Uri.https(webVersionDomain, 'oskware_bridge.php', {"endpoint": "singleplayerStream", "user": userID.toLowerCase().trim(), "stream": stream});
|
||||
} else {
|
||||
url = Uri.https('ch.tetr.io', 'api/users/${userID.toLowerCase().trim()}/records/$stream');
|
||||
}
|
||||
|
@ -433,7 +434,7 @@ class TetrioService extends DB {
|
|||
|
||||
Uri url;
|
||||
if (kIsWeb) { // Web version sends every request through my php script at the same domain, where Tetra Stats located because of CORS
|
||||
url = Uri.https('ts.dan63.by', 'oskware_bridge.php', {"endpoint": "PeakTR", "user": id});
|
||||
url = Uri.https(webVersionDomain, 'oskware_bridge.php', {"endpoint": "PeakTR", "user": id});
|
||||
} else { // Actually going to hit p1nkl0bst3r api
|
||||
url = Uri.https('api.p1nkl0bst3r.xyz', 'toptr/$id');
|
||||
}
|
||||
|
@ -484,7 +485,7 @@ class TetrioService extends DB {
|
|||
|
||||
Uri url;
|
||||
if (kIsWeb) {
|
||||
url = Uri.https('ts.dan63.by', 'oskware_bridge.php', {"endpoint": "cutoffs"});
|
||||
url = Uri.https(webVersionDomain, 'oskware_bridge.php', {"endpoint": "cutoffs"});
|
||||
} else {
|
||||
url = Uri.https('ch.tetr.io', 'api/labs/league_ranks');
|
||||
}
|
||||
|
@ -528,7 +529,7 @@ class TetrioService extends DB {
|
|||
Cutoffs? cached = _cache.get("CutoffsTetrioleague_ranks", Cutoffs);
|
||||
if (cached != null) return cached;
|
||||
|
||||
Uri url = Uri.https('ts.dan63.by', 'beanserver_blaster/cutoffs.json');
|
||||
Uri url = Uri.https(webVersionDomain, 'beanserver_blaster/cutoffs.json');
|
||||
|
||||
try{
|
||||
final response = await client.get(url);
|
||||
|
@ -572,7 +573,7 @@ class TetrioService extends DB {
|
|||
}
|
||||
|
||||
Future<List<Cutoffs>> fetchCutoffsHistory() async {
|
||||
Uri url = Uri.https('ts.dan63.by', 'beanserver_blaster/history.csv');
|
||||
Uri url = Uri.https(webVersionDomain, 'beanserver_blaster/history.csv');
|
||||
|
||||
try{
|
||||
final response = await client.get(url);
|
||||
|
@ -632,7 +633,7 @@ class TetrioService extends DB {
|
|||
|
||||
Uri url;
|
||||
if (kIsWeb) {
|
||||
url = Uri.https('ts.dan63.by', 'oskware_bridge.php', {"endpoint": "TLTopOne"});
|
||||
url = Uri.https(webVersionDomain, 'oskware_bridge.php', {"endpoint": "TLTopOne"});
|
||||
} else {
|
||||
url = Uri.https('ch.tetr.io', 'api/users/by/league', {"after": "25000:0:0", "limit": "1"});
|
||||
}
|
||||
|
@ -676,7 +677,7 @@ class TetrioService extends DB {
|
|||
// TODO: find le way to get season 2 history
|
||||
Uri url;
|
||||
if (kIsWeb) {
|
||||
url = Uri.https('ts.dan63.by', 'oskware_bridge.php', {"endpoint": "TLHistory", "user": id});
|
||||
url = Uri.https(webVersionDomain, 'oskware_bridge.php', {"endpoint": "TLHistory", "user": id});
|
||||
} else {
|
||||
url = Uri.https('api.p1nkl0bst3r.xyz', 'tlhist/$id');
|
||||
}
|
||||
|
@ -748,7 +749,7 @@ class TetrioService extends DB {
|
|||
Future<TetraLeagueAlphaStream> fetchAndSaveOldTLmatches(String userID) async {
|
||||
Uri url;
|
||||
if (kIsWeb) {
|
||||
url = Uri.https('ts.dan63.by', 'oskware_bridge.php', {"endpoint": "TLMatches", "user": userID});
|
||||
url = Uri.https(webVersionDomain, 'oskware_bridge.php', {"endpoint": "TLMatches", "user": userID});
|
||||
} else {
|
||||
url = Uri.https('api.p1nkl0bst3r.xyz', 'tlmatches/$userID', {"before": "0", "count": "9000"});
|
||||
}
|
||||
|
@ -790,7 +791,7 @@ class TetrioService extends DB {
|
|||
TetrioPlayersLeaderboard? cached = _cache.get("league", TetrioPlayersLeaderboard);
|
||||
if (cached != null) return cached;
|
||||
|
||||
Uri url = Uri.https('ts.dan63.by', 'beanserver_blaster/leaderboard.json');
|
||||
Uri url = Uri.https(webVersionDomain, 'beanserver_blaster/leaderboard.json');
|
||||
|
||||
try{
|
||||
final response = await client.get(url);
|
||||
|
@ -830,7 +831,7 @@ class TetrioService extends DB {
|
|||
|
||||
Uri url;
|
||||
if (kIsWeb) {
|
||||
url = Uri.https('ts.dan63.by', 'oskware_bridge.php', {"endpoint": "TLLeaderboard"});
|
||||
url = Uri.https(webVersionDomain, 'oskware_bridge.php', {"endpoint": "TLLeaderboard"});
|
||||
} else {
|
||||
url = Uri.https('ch.tetr.io', 'api/users/by/${lb??"league"}', {
|
||||
"limit": "100",
|
||||
|
@ -882,7 +883,7 @@ class TetrioService extends DB {
|
|||
Future<List<RecordSingle>> fetchTetrioRecordsLeaderboard({String? prisecter, String? lb, String? country}) async{
|
||||
Uri url;
|
||||
if (kIsWeb) {
|
||||
url = Uri.https('ts.dan63.by', 'oskware_bridge.php', {"endpoint": "TLLeaderboard"});
|
||||
url = Uri.https(webVersionDomain, 'oskware_bridge.php', {"endpoint": "TLLeaderboard"});
|
||||
} else {
|
||||
url = Uri.https('ch.tetr.io', 'api/records/${lb??"40l_global"}', {
|
||||
"limit": "100",
|
||||
|
@ -942,7 +943,7 @@ class TetrioService extends DB {
|
|||
|
||||
Uri url;
|
||||
if (kIsWeb) {
|
||||
url = Uri.https('ts.dan63.by', 'oskware_bridge.php', {"endpoint": "tetrioNews", "user": userID.toLowerCase().trim(), "limit": "100"});
|
||||
url = Uri.https(webVersionDomain, 'oskware_bridge.php', {"endpoint": "tetrioNews", "user": userID.toLowerCase().trim(), "limit": "100"});
|
||||
} else {
|
||||
url = Uri.https('ch.tetr.io', 'api/news/user_${userID.toLowerCase().trim()}', {"limit": "100"});
|
||||
}
|
||||
|
@ -990,7 +991,7 @@ class TetrioService extends DB {
|
|||
|
||||
Uri url;
|
||||
if (kIsWeb) {
|
||||
url = Uri.https('ts.dan63.by', 'oskware_bridge.php', {"endpoint": "tetrioUserTL", "user": userID.toLowerCase().trim()});
|
||||
url = Uri.https(webVersionDomain, 'oskware_bridge.php', {"endpoint": "tetrioUserTL", "user": userID.toLowerCase().trim()});
|
||||
} else {
|
||||
url = Uri.https('ch.tetr.io', 'api/users/${userID.toLowerCase().trim()}/records/league/recent');
|
||||
}
|
||||
|
@ -1120,7 +1121,7 @@ class TetrioService extends DB {
|
|||
|
||||
Uri url;
|
||||
if (kIsWeb) {
|
||||
url = Uri.https('ts.dan63.by', 'oskware_bridge.php', {"endpoint": "tetrioUserRecords", "user": userID.toLowerCase().trim()});
|
||||
url = Uri.https(webVersionDomain, 'oskware_bridge.php', {"endpoint": "tetrioUserRecords", "user": userID.toLowerCase().trim()});
|
||||
} else {
|
||||
url = Uri.https('ch.tetr.io', 'api/users/${userID.toLowerCase().trim()}/records');
|
||||
}
|
||||
|
@ -1173,7 +1174,7 @@ class TetrioService extends DB {
|
|||
|
||||
Uri url;
|
||||
if (kIsWeb) {
|
||||
url = Uri.https('ts.dan63.by', 'oskware_bridge.php', {"endpoint": "Summaries", "id": id});
|
||||
url = Uri.https(webVersionDomain, 'oskware_bridge.php', {"endpoint": "Summaries", "id": id});
|
||||
} else {
|
||||
url = Uri.https('ch.tetr.io', 'api/users/$id/summaries');
|
||||
}
|
||||
|
@ -1311,7 +1312,7 @@ class TetrioService extends DB {
|
|||
// trying to find player with given discord id
|
||||
Uri dUrl;
|
||||
if (kIsWeb) {
|
||||
dUrl = Uri.https('ts.dan63.by', 'oskware_bridge.php', {"endpoint": "tetrioUserByDiscordID", "user": user.toLowerCase().trim()});
|
||||
dUrl = Uri.https(webVersionDomain, 'oskware_bridge.php', {"endpoint": "tetrioUserByDiscordID", "user": user.toLowerCase().trim()});
|
||||
} else {
|
||||
dUrl = Uri.https('ch.tetr.io', 'api/users/search/discord:${user.toLowerCase().trim()}');
|
||||
}
|
||||
|
@ -1356,7 +1357,7 @@ class TetrioService extends DB {
|
|||
// finally going to obtain
|
||||
Uri url;
|
||||
if (kIsWeb) {
|
||||
url = Uri.https('ts.dan63.by', 'oskware_bridge.php', {"endpoint": "tetrioUser", "user": user.toLowerCase().trim()});
|
||||
url = Uri.https(webVersionDomain, 'oskware_bridge.php', {"endpoint": "tetrioUser", "user": user.toLowerCase().trim()});
|
||||
} else {
|
||||
url = Uri.https('ch.tetr.io', 'api/users/${user.toLowerCase().trim()}');
|
||||
}
|
||||
|
|
|
@ -58,7 +58,7 @@ class NerdStatsThingy extends StatelessWidget{
|
|||
RichText(
|
||||
textAlign: TextAlign.center,
|
||||
text: TextSpan(
|
||||
style: const TextStyle(fontFamily: "Eurostile Round"),
|
||||
style: const TextStyle(fontFamily: "Eurostile Round", color: Colors.white),
|
||||
children: [
|
||||
TextSpan(text: "${t.stats.app.short}\n"),
|
||||
TextSpan(text: f3.format(nerdStats.app), style: TextStyle(fontSize: 25, fontFamily: "Eurostile Round Extended", fontWeight: FontWeight.w100, color: getStatColor(nerdStats.app, averages?.nerdStats?.app, true))),
|
||||
|
@ -99,7 +99,7 @@ class NerdStatsThingy extends StatelessWidget{
|
|||
RichText(
|
||||
textAlign: TextAlign.center,
|
||||
text: TextSpan(
|
||||
style: const TextStyle(fontFamily: "Eurostile Round"),
|
||||
style: const TextStyle(fontFamily: "Eurostile Round", color: Colors.white),
|
||||
children: [
|
||||
TextSpan(text: "${t.stats.vsapm.short}\n"),
|
||||
TextSpan(text: f3.format(nerdStats.vsapm), style: TextStyle(fontSize: 25, fontFamily: "Eurostile Round Extended", fontWeight: FontWeight.w100, color: getStatColor(nerdStats.vsapm, averages?.nerdStats?.vsapm, true))),
|
||||
|
|
|
@ -24,23 +24,29 @@ class TetraLeagueThingy extends StatelessWidget{
|
|||
List<TableRow> secondColumn(){
|
||||
return [
|
||||
TableRow(children: [
|
||||
//Text("APM: ", style: TextStyle(fontSize: 21)),
|
||||
Text(intf.format(league.gamesPlayed), textAlign: TextAlign.right, style: const TextStyle(fontSize: 21)),
|
||||
Text(" ${t.stats.gp.short}", style: TextStyle(fontSize: 21)),
|
||||
Tooltip(
|
||||
message: "${t.stats.gp.full}",
|
||||
child: Text(" ${t.stats.gp.short}", style: TextStyle(fontSize: 21))
|
||||
),
|
||||
if (toCompare != null) Text(" (${comparef2.format(league.gamesPlayed-toCompare!.gamesPlayed)})", textAlign: TextAlign.right, style: TextStyle(fontSize: 21, color: Colors.grey)),
|
||||
if (lbPos != null) Text(lbPos?.gamesPlayed != null ? (lbPos!.gamesPlayed!.position >= 1000 ? " (${t.top} ${f2.format(lbPos!.gamesPlayed!.percentage*100)}%)" : " (№ ${lbPos!.gamesPlayed!.position})") : "(№ ---)", style: TextStyle(color: lbPos?.gamesPlayed != null ? getColorOfRank(lbPos!.gamesPlayed!.position) : null))
|
||||
]),
|
||||
TableRow(children: [
|
||||
//Text("PPS: ", style: TextStyle(fontSize: 21)),
|
||||
Text(intf.format(league.gamesWon), textAlign: TextAlign.right, style: const TextStyle(fontSize: 21)),
|
||||
Text(" ${t.stats.gw.short}", style: TextStyle(fontSize: 21)),
|
||||
Tooltip(
|
||||
message: "${t.stats.gw.full}",
|
||||
child: Text(" ${t.stats.gw.short}", style: TextStyle(fontSize: 21))
|
||||
),
|
||||
if (toCompare != null) Text(" (${comparef2.format(league.gamesWon-toCompare!.gamesWon)})", textAlign: TextAlign.right, style: TextStyle(fontSize: 21, color: Colors.grey)),
|
||||
if (lbPos != null) Text(lbPos?.gamesWon != null ? (lbPos!.gamesWon!.position >= 1000 ? " (${t.top} ${f2.format(lbPos!.gamesWon!.percentage*100)}%)" : " (№ ${lbPos!.gamesWon!.position})") : "(№ ---)", style: TextStyle(color: lbPos?.gamesWon != null ? getColorOfRank(lbPos!.gamesWon!.position) : null))
|
||||
]),
|
||||
TableRow(children: [
|
||||
//Text("VS: ", style: TextStyle(fontSize: 21)),
|
||||
Tooltip(child: Text("${league.gxe.isNegative ? "---" : f3.format(league.gxe)}", textAlign: TextAlign.right, style: TextStyle(fontSize: 21, color: league.gxe.isNegative ? Colors.grey : Colors.white)), message: "${f2.format(league.s1tr)} S1 TR"),
|
||||
Tooltip(child: Text(" ${t.stats.glixare.short}", style: TextStyle(fontSize: 21, color: league.gxe.isNegative ? Colors.grey : Colors.white)), message: "Glixare"),
|
||||
Tooltip(
|
||||
message: "${t.stats.glixare.full}",
|
||||
child: Tooltip(child: Text(" ${t.stats.glixare.short}", style: TextStyle(fontSize: 21, color: league.gxe.isNegative ? Colors.grey : Colors.white)), message: "Glixare")
|
||||
),
|
||||
if (toCompare != null) Text(" (${comparef.format(league.gxe-toCompare!.gxe)})", textAlign: TextAlign.right, style: TextStyle(fontSize: 21, color: getDifferenceColor(league.gxe-toCompare!.gxe))),
|
||||
if (lbPos != null) Text(lbPos?.glixare != null ? (lbPos!.glixare!.position >= 1000 ? " (${t.top} ${f2.format(lbPos!.glixare!.percentage*100)}%)" : " (№ ${lbPos!.glixare!.position})") : "(№ ---)", style: TextStyle(color: lbPos?.glixare != null ? getColorOfRank(lbPos!.glixare!.position) : null))
|
||||
]),
|
||||
|
@ -75,19 +81,28 @@ class TetraLeagueThingy extends StatelessWidget{
|
|||
children: [
|
||||
TableRow(children: [
|
||||
Text(league.apm != null ? f2.format(league.apm) : "-.--", textAlign: TextAlign.right, style: TextStyle(fontSize: 21, color: league.apm != null ? getStatColor(league.apm!, averages?.apm, true) : Colors.grey)),
|
||||
Text(" ${t.stats.apm.short}", style: TextStyle(fontSize: 21, color: league.apm != null ? getStatColor(league.apm!, averages?.apm, true) : Colors.grey)),
|
||||
Tooltip(
|
||||
message: "${t.stats.apm.full}${(averages != null) ? "\n${t.rankView.avgForRank(rank: league.percentileRank.toUpperCase())}: ${f2.format(averages!.apm)} ${t.stats.apm.short}" : ""}",
|
||||
child: Text(" ${t.stats.apm.short}", style: TextStyle(fontSize: 21, color: league.apm != null ? getStatColor(league.apm!, averages?.apm, true) : Colors.grey))
|
||||
),
|
||||
if (toCompare != null) Text(" (${comparef2.format(league.apm!-toCompare!.apm!)})", textAlign: TextAlign.right, style: TextStyle(fontSize: 21, color: getDifferenceColor(league.apm!-toCompare!.apm!))),
|
||||
if (lbPos != null) Text(lbPos?.apm != null ? (lbPos!.apm!.position >= 1000 ? " (${t.top} ${f2.format(lbPos!.apm!.percentage*100)}%)" : " (№ ${lbPos!.apm!.position})") : "(№ ---)", style: TextStyle(color: lbPos?.apm != null ? getColorOfRank(lbPos!.apm!.position) : null))
|
||||
]),
|
||||
TableRow(children: [
|
||||
Text(league.pps != null ? f2.format(league.pps) : "-.--", textAlign: TextAlign.right, style: TextStyle(fontSize: 21, color: league.pps != null ? getStatColor(league.pps!, averages?.pps, true) : Colors.grey)),
|
||||
Text(" ${t.stats.pps.short}", style: TextStyle(fontSize: 21, color: league.pps != null ? getStatColor(league.pps!, averages?.pps, true) : Colors.grey)),
|
||||
Tooltip(
|
||||
message: "${t.stats.pps.full}${(averages != null) ? "\n${t.rankView.avgForRank(rank: league.percentileRank.toUpperCase())}: ${f2.format(averages!.pps)} ${t.stats.pps.short}" : ""}",
|
||||
child: Text(" ${t.stats.pps.short}", style: TextStyle(fontSize: 21, color: league.pps != null ? getStatColor(league.pps!, averages?.pps, true) : Colors.grey))
|
||||
),
|
||||
if (toCompare != null) Text(" (${comparef2.format(league.pps!-toCompare!.pps!)})", textAlign: TextAlign.right, style: TextStyle(fontSize: 21, color: getDifferenceColor(league.pps!-toCompare!.pps!))),
|
||||
if (lbPos != null) Text(lbPos?.pps != null ? (lbPos!.pps!.position >= 1000 ? " (${t.top} ${f2.format(lbPos!.pps!.percentage*100)}%)" : " (№ ${lbPos!.pps!.position})") : "(№ ---)", style: TextStyle(color: lbPos?.pps != null ? getColorOfRank(lbPos!.pps!.position) : null))
|
||||
]),
|
||||
TableRow(children: [
|
||||
Text(league.vs != null ? f2.format(league.vs) : "-.--", textAlign: TextAlign.right, style: TextStyle(fontSize: 21, color: league.vs != null ? getStatColor(league.vs!, averages?.vs, true) : Colors.grey)),
|
||||
Text(" ${t.stats.vs.short}", style: TextStyle(fontSize: 21, color: league.vs != null ? getStatColor(league.vs!, averages?.vs, true) : Colors.grey)),
|
||||
Tooltip(
|
||||
message: "${t.stats.vs.full}${(averages != null) ? "\n${t.rankView.avgForRank(rank: league.percentileRank.toUpperCase())}: ${f2.format(averages!.vs)} ${t.stats.vs.short}" : ""}",
|
||||
child: Text(" ${t.stats.vs.short}", style: TextStyle(fontSize: 21, color: league.vs != null ? getStatColor(league.vs!, averages?.vs, true) : Colors.grey))
|
||||
),
|
||||
if (toCompare != null) Text(" (${comparef2.format(league.vs!-toCompare!.vs!)})", textAlign: TextAlign.right, style: TextStyle(fontSize: 21, color: getDifferenceColor(league.vs!-toCompare!.vs!))),
|
||||
if (lbPos != null) Text(lbPos?.vs != null ? (lbPos!.vs!.position >= 1000 ? " (${t.top} ${f2.format(lbPos!.vs!.percentage*100)}%)" : " (№ ${lbPos!.vs!.position})") : "(№ ---)", style: TextStyle(color: lbPos?.vs != null ? getColorOfRank(lbPos!.vs!.position) : null))
|
||||
]),
|
||||
|
|
|
@ -133,6 +133,7 @@ class _UserThingyState extends State<UserThingy> with SingleTickerProviderStateM
|
|||
child: RichText(text: TextSpan(text: widget.player.username, style: TextStyle(
|
||||
fontFamily: fontStyle(widget.player.username.length),
|
||||
fontSize: 28,
|
||||
color: Colors.white
|
||||
),
|
||||
recognizer: TapGestureRecognizer()..onTap = (){
|
||||
copyToClipboard(widget.player.userId);
|
||||
|
@ -156,7 +157,7 @@ class _UserThingyState extends State<UserThingy> with SingleTickerProviderStateM
|
|||
),
|
||||
RichText(
|
||||
text: TextSpan(
|
||||
style: const TextStyle(fontFamily: "Eurostile Round"),
|
||||
style: const TextStyle(fontFamily: "Eurostile Round", color: Colors.white),
|
||||
children:
|
||||
[
|
||||
if (widget.player.friendCount > 0) WidgetSpan(child: Tooltip(message: t.stats.followers, child: Icon(Icons.person)), alignment: PlaceholderAlignment.middle, baseline: TextBaseline.alphabetic),
|
||||
|
@ -176,7 +177,7 @@ class _UserThingyState extends State<UserThingy> with SingleTickerProviderStateM
|
|||
width: 270,
|
||||
child: RichText(
|
||||
text: TextSpan(
|
||||
style: const TextStyle(fontFamily: "Eurostile Round"),
|
||||
style: const TextStyle(fontFamily: "Eurostile Round", color: Colors.white),
|
||||
children: [
|
||||
TextSpan(text: timestamp(widget.player.registrationTime), style: const TextStyle(color: Colors.grey)),
|
||||
if (widget.player.country != null) TextSpan(text: " • ${t.countries[widget.player.country]}")
|
||||
|
@ -191,7 +192,7 @@ class _UserThingyState extends State<UserThingy> with SingleTickerProviderStateM
|
|||
child: RichText(
|
||||
textAlign: TextAlign.end,
|
||||
text: TextSpan(
|
||||
style: const TextStyle(fontFamily: "Eurostile Round"),
|
||||
style: const TextStyle(fontFamily: "Eurostile Round", color: Colors.white),
|
||||
children: [
|
||||
TextSpan(text: "Level ${(widget.player.level.isNegative || widget.player.level.isNaN) ? "---" : intf.format(widget.player.level.floor())}", style: TextStyle(decoration: (widget.player.level.isNegative || widget.player.level.isNaN) ? null : TextDecoration.underline, decorationColor: Colors.white70, decorationStyle: TextDecorationStyle.dotted, color: (widget.player.level.isNegative || widget.player.level.isNaN) ? Colors.grey : Colors.white), recognizer: (widget.player.level.isNegative || widget.player.level.isNaN) ? null : TapGestureRecognizer()?..onTap = (){
|
||||
showDialog(
|
||||
|
|
|
@ -216,6 +216,7 @@
|
|||
"underpopulated": "Underpopulated by a $players",
|
||||
"PlayersEqualSupposedToBe": "cute",
|
||||
"avgStats": "Average Stats",
|
||||
"avgForRank": "Average for $rank rank",
|
||||
"avgNerdStats": "Average Nerd Stats",
|
||||
"minimums": "Minimums",
|
||||
"maximums": "Maximums"
|
||||
|
|
|
@ -216,6 +216,7 @@
|
|||
"underpopulated": "Не хватает $players",
|
||||
"PlayersEqualSupposedToBe": "лол",
|
||||
"avgStats": "Средние значения",
|
||||
"avgForRank": "Среднее для $rank ранга",
|
||||
"avgNerdStats": "Средние задротские значения",
|
||||
"minimums": "Минимумы",
|
||||
"maximums": "Максимумы"
|
||||
|
|
Loading…
Reference in New Issue