diff --git a/lib/views/calc_view.dart b/lib/views/calc_view.dart index 0d0eea4..b3aee1c 100644 --- a/lib/views/calc_view.dart +++ b/lib/views/calc_view.dart @@ -148,11 +148,13 @@ class CalcState extends State { return RadarChartTitle( text: 'APM', angle: angle, + positionPercentageOffset: 0.05 ); case 1: return RadarChartTitle( text: 'PPS', angle: angle, + positionPercentageOffset: 0.05 ); case 2: return RadarChartTitle(text: 'VS', angle: angle, positionPercentageOffset: 0.05); diff --git a/lib/views/rank_averages_view.dart b/lib/views/rank_averages_view.dart index 11a13fb..d600b3e 100644 --- a/lib/views/rank_averages_view.dart +++ b/lib/views/rank_averages_view.dart @@ -9,6 +9,11 @@ import 'package:tetra_stats/views/main_view.dart' show MainView, f4, f2; var chartsShortTitlesDropdowns = [for (MapEntry e in chartsShortTitles.entries) DropdownMenuItem(value: e.key, child: Text(e.value),)]; Stats chartsX = Stats.tr; Stats chartsY = Stats.apm; +List itemStats = [for (MapEntry e in chartsShortTitles.entries) DropdownMenuItem(value: e.key, child: Text(e.value))]; +Stats sortBy = Stats.tr; +bool reversed = false; +List itemCountries = [for (MapEntry e in t.countries.entries) DropdownMenuItem(value: e.key, child: Text(e.value))]; +String country = ""; class RankView extends StatefulWidget { final List rank; @@ -44,6 +49,7 @@ class RankState extends State with SingleTickerProviderStateMixin { Widget build(BuildContext context) { final t = Translations.of(context); bool bigScreen = MediaQuery.of(context).size.width > 768; + List they = TetrioPlayersLeaderboard("lol", []).getStatRanking(widget.rank[1]["entries"]!, sortBy, reversed: reversed, country: country); return Scaffold( appBar: AppBar( title: Text(widget.rank[1]["everyone"] ? t.everyoneAverages : t.rankAverages(rank: widget.rank[0].rank.toUpperCase())), @@ -64,12 +70,7 @@ class RankState extends State with SingleTickerProviderStateMixin { children: [ Stack( alignment: Alignment.topCenter, - children: [ - Image.asset( - "res/tetrio_tl_alpha_ranks/${widget.rank[0].rank}.png", - fit: BoxFit.fitHeight, - height: 128), - ], + children: [Image.asset("res/tetrio_tl_alpha_ranks/${widget.rank[0].rank}.png",fit: BoxFit.fitHeight,height: 128), ], ), Flexible( child: Column( @@ -114,116 +115,209 @@ class RankState extends State with SingleTickerProviderStateMixin { direction: Axis.horizontal, alignment: WrapAlignment.center, spacing: 25, - children: [Column( children: [ - Row( - mainAxisSize: MainAxisSize.min, + Column( children: [ - Padding( - padding: const EdgeInsets.all(8.0), - child: Text(t.currentAxis(axis: "X"), style: const TextStyle(fontSize: 22))), - DropdownButton( - items: chartsShortTitlesDropdowns, - value: chartsX, - onChanged: (value) { - chartsX = value; - _justUpdate(); - } - ), - ], - ), - ], - ),Column( - children: [ - Row( - mainAxisSize: MainAxisSize.min, - children: [ - Padding( - padding: const EdgeInsets.all(8.0), - child: Text(t.currentAxis(axis: "Y"), style: const TextStyle(fontSize: 22)), + Row( + mainAxisSize: MainAxisSize.min, + children: [ + Padding( + padding: const EdgeInsets.all(8.0), + child: Text(t.currentAxis(axis: "X"), + style: + const TextStyle(fontSize: 22))), + DropdownButton( + items: chartsShortTitlesDropdowns, + value: chartsX, + onChanged: (value) { + chartsX = value; + _justUpdate(); + }), + ], ), - DropdownButton( - items: chartsShortTitlesDropdowns, - value: chartsY, - onChanged: (value) { - chartsY = value; - _justUpdate(); - } + ], + ), + Column( + children: [ + Row( + mainAxisSize: MainAxisSize.min, + children: [ + Padding( + padding: const EdgeInsets.all(8.0), + child: Text(t.currentAxis(axis: "Y"), + style: const TextStyle(fontSize: 22)), ), + DropdownButton( + items: chartsShortTitlesDropdowns, + value: chartsY, + onChanged: (value) { + chartsY = value; + _justUpdate(); + }), + ], + ), ], ), ], - ),],), - if(widget.rank[1]["entries"].length > 1) SizedBox( - width: MediaQuery.of(context).size.width, - height: MediaQuery.of(context).size.height - 104, - child: Stack( - children: [ - Padding( - padding: bigScreen - ? const EdgeInsets.fromLTRB(40, 40, 40, 48) - : const EdgeInsets.fromLTRB(0, 40, 16, 48), - child: ScatterChart( - ScatterChartData( - scatterSpots: [ for (TetrioPlayerFromLeaderboard entry in widget.rank[1]["entries"]) _MyScatterSpot(entry.getStatByEnum(chartsX) as double, entry.getStatByEnum(chartsY) as double, entry.userId, entry.username, color: rankColors[entry.rank])], - scatterTouchData: ScatterTouchData(touchTooltipData: ScatterTouchTooltipData( - fitInsideHorizontally: true, fitInsideVertically: true, getTooltipItems: (touchedSpot) { - touchedSpot as _MyScatterSpot; - return ScatterTooltipItem("${touchedSpot.nickname}\n", textStyle: const TextStyle(fontFamily: "Eurostile Round Extended"), children: [TextSpan(text: "${f4.format(touchedSpot.x)} ${chartsShortTitles[chartsX]}\n${f4.format(touchedSpot.y)} ${chartsShortTitles[chartsY]}", style: const TextStyle(fontFamily: "Eurostile Round"))]); - }), - touchCallback:(event, response) { - if (event.runtimeType == FlTapDownEvent && response?.touchedSpot?.spot != null){ - var spot = response?.touchedSpot?.spot as _MyScatterSpot; - Navigator.push( - context, - MaterialPageRoute( - builder: (context) => MainView(player: spot.nickname), - maintainState: false, - ), - ); - } - },), - ), - swapAnimationDuration: const Duration(milliseconds: 150), // Optional - swapAnimationCurve: Curves.linear, // Optional - ), - ), - ], - )) + ), + if (widget.rank[1]["entries"].length > 1) + SizedBox( + width: MediaQuery.of(context).size.width, + height: MediaQuery.of(context).size.height - 104, + child: Stack( + children: [ + Padding( + padding: bigScreen + ? const EdgeInsets.fromLTRB( + 40, 40, 40, 48) + : const EdgeInsets.fromLTRB( + 0, 40, 16, 48), + child: ScatterChart( + ScatterChartData( + scatterSpots: [ + for (TetrioPlayerFromLeaderboard entry + in widget.rank[1]["entries"]) + _MyScatterSpot( + entry.getStatByEnum(chartsX) + as double, + entry.getStatByEnum(chartsY) + as double, + entry.userId, + entry.username, + color: rankColors[entry.rank]) + ], + scatterTouchData: ScatterTouchData( + touchTooltipData: + ScatterTouchTooltipData( + fitInsideHorizontally: true, + fitInsideVertically: true, + getTooltipItems: + (touchedSpot) { + touchedSpot + as _MyScatterSpot; + return ScatterTooltipItem( + "${touchedSpot.nickname}\n", + textStyle: const TextStyle( + fontFamily: + "Eurostile Round Extended"), + children: [ + TextSpan( + text: + "${f4.format(touchedSpot.x)} ${chartsShortTitles[chartsX]}\n${f4.format(touchedSpot.y)} ${chartsShortTitles[chartsY]}", + style: const TextStyle( + fontFamily: + "Eurostile Round")) + ]); + }), + touchCallback: (event, response) { + if (event.runtimeType == + FlTapDownEvent && + response?.touchedSpot?.spot != + null) { + var spot = response?.touchedSpot + ?.spot as _MyScatterSpot; + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => + MainView( + player: + spot.nickname), + maintainState: false, + ), + ); + } + }, + ), + ), + swapAnimationDuration: const Duration( + milliseconds: 150), // Optional + swapAnimationCurve: + Curves.linear, // Optional + ), + ), + ], + )) else Center(child: Text(t.notEnoughData, style: const TextStyle(fontFamily: "Eurostile Round Extended", fontSize: 28))) ], ), Column( children: [ - Text(t.entries, - style: TextStyle( - fontFamily: "Eurostile Round Extended", - fontSize: bigScreen ? 42 : 28)), + Text(t.entries, style: TextStyle(fontFamily: "Eurostile Round Extended", fontSize: bigScreen ? 42 : 28)), + Padding( + padding: const EdgeInsets.only(left: 16), + child: Wrap( + direction: Axis.horizontal, + alignment: WrapAlignment.start, + crossAxisAlignment: WrapCrossAlignment.center, + spacing: 16, + children: [ + Row( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.baseline, + textBaseline: TextBaseline.alphabetic, + children: [ + Text("${t.sortBy}: ", style: const TextStyle(color: Colors.white, fontSize: 25)), + DropdownButton( + items: itemStats, + value: sortBy, + onChanged: ((value) { + sortBy = value; + setState(() {}); + }), + ), + ], + ), + Row( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.baseline, + textBaseline: TextBaseline.alphabetic, + children: [ + Text("${t.reversed}: ", style: const TextStyle(color: Colors.white, fontSize: 25)), + Padding(padding: const EdgeInsets.fromLTRB(0, 5.5, 0, 7.5), + child: Checkbox( + value: reversed, + checkColor: Colors.black, + onChanged: ((value) { + reversed = value!; + setState(() {}); + }), + ), + ), + ], + ), + Row( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.baseline, + textBaseline: TextBaseline.alphabetic, + children: [ + Text("${t.country}: ", style: const TextStyle(color: Colors.white, fontSize: 25)), + DropdownButton( + items: itemCountries, + value: country, + onChanged: ((value) { + country = value; + setState(() {}); + }), + ), + ], + ), + ], + ), + ), Expanded( child: ListView.builder( - itemCount: widget.rank[1]["entries"]!.length, + itemCount: they.length, itemBuilder: (context, index) { - bool bigScreen = - MediaQuery.of(context).size.width > 768; + bool bigScreen = MediaQuery.of(context).size.width > 768; return ListTile( - title: Text( - widget.rank[1]["entries"][index].username, - style: const TextStyle( - fontFamily: - "Eurostile Round Extended")), - subtitle: Text( - "${f2.format(widget.rank[1]["entries"][index].apm)} APM, ${f2.format(widget.rank[1]["entries"][index].pps)} PPS, ${f2.format(widget.rank[1]["entries"][index].vs)} VS, ${f2.format(widget.rank[1]["entries"][index].nerdStats.app)} APP, ${f2.format(widget.rank[1]["entries"][index].nerdStats.vsapm)} VS/APM"), + title: Text(they[index].username, style: const TextStyle(fontFamily: "Eurostile Round Extended")), + subtitle: Text(sortBy == Stats.tr ? "${f2.format(they[index].apm)} APM, ${f2.format(they[index].pps)} PPS, ${f2.format(they[index].vs)} VS, ${f2.format(they[index].nerdStats.app)} APP, ${f2.format(they[index].nerdStats.vsapm)} VS/APM" : "${f4.format(they[index].getStatByEnum(sortBy))} ${chartsShortTitles[sortBy]}"), trailing: Row( mainAxisSize: MainAxisSize.min, children: [ - Text( - "${f2.format(widget.rank[1]["entries"][index].rating)} TR", - style: bigScreen - ? const TextStyle(fontSize: 28) - : null), - Image.asset( - "res/tetrio_tl_alpha_ranks/${widget.rank[1]["entries"][index].rank}.png", - height: bigScreen ? 48 : 16), + Text("${f2.format(they[index].rating)} TR", style: bigScreen ? const TextStyle(fontSize: 28) : null), + Image.asset("res/tetrio_tl_alpha_ranks/${they[index].rank}.png", height: bigScreen ? 48 : 16), ], ), onTap: () { @@ -245,199 +339,34 @@ class RankState extends State with SingleTickerProviderStateMixin { ), Column( children: [ - Text(t.lowestValues, - style: TextStyle( - fontFamily: "Eurostile Round Extended", - fontSize: bigScreen ? 42 : 28)), + Text(t.lowestValues, style: TextStyle( fontFamily: "Eurostile Round Extended", fontSize: bigScreen ? 42 : 28)), Expanded( child: ListView( children: [ - _ListEntry( - value: widget.rank[1]["lowestTR"], - label: t.statCellNum.tr - .replaceAll(RegExp(r'\n'), " "), - id: widget.rank[1]["lowestTRid"], - username: widget.rank[1]["lowestTRnick"], - approximate: false, - fractionDigits: 2), - _ListEntry( - value: widget.rank[1]["lowestGlicko"], - label: "Glicko", - id: widget.rank[1]["lowestGlickoID"], - username: widget.rank[1]["lowestGlickoNick"], - approximate: false, - fractionDigits: 2), - _ListEntry( - value: widget.rank[1]["lowestRD"], - label: t.statCellNum.rd - .replaceAll(RegExp(r'\n'), " "), - id: widget.rank[1]["lowestRdID"], - username: widget.rank[1]["lowestRdNick"], - approximate: false, - fractionDigits: 3), - _ListEntry( - value: widget.rank[1]["lowestGamesPlayed"], - label: t.statCellNum.gamesPlayed - .replaceAll(RegExp(r'\n'), " "), - id: widget.rank[1]["lowestGamesPlayedID"], - username: widget.rank[1] - ["lowestGamesPlayedNick"], - approximate: false), - _ListEntry( - value: widget.rank[1]["lowestGamesWon"], - label: t.statCellNum.gamesWonTL - .replaceAll(RegExp(r'\n'), " "), - id: widget.rank[1]["lowestGamesWonID"], - username: widget.rank[1] - ["lowestGamesWonNick"], - approximate: false), - _ListEntry( - value: widget.rank[1]["lowestWinrate"] * 100, - label: t.statCellNum.winrate - .replaceAll(RegExp(r'\n'), " "), - id: widget.rank[1]["lowestWinrateID"], - username: widget.rank[1]["lowestWinrateNick"], - approximate: false, - fractionDigits: 2), - _ListEntry( - value: widget.rank[1]["lowestAPM"], - label: t.statCellNum.apm - .replaceAll(RegExp(r'\n'), " "), - id: widget.rank[1]["lowestAPMid"], - username: widget.rank[1]["lowestAPMnick"], - approximate: false, - fractionDigits: 2), - _ListEntry( - value: widget.rank[1]["lowestPPS"], - label: t.statCellNum.pps - .replaceAll(RegExp(r'\n'), " "), - id: widget.rank[1]["lowestPPSid"], - username: widget.rank[1]["lowestPPSnick"], - approximate: false, - fractionDigits: 2), - _ListEntry( - value: widget.rank[1]["lowestVS"], - label: t.statCellNum.vs - .replaceAll(RegExp(r'\n'), " "), - id: widget.rank[1]["lowestVSid"], - username: widget.rank[1]["lowestVSnick"], - approximate: false, - fractionDigits: 2), - _ListEntry( - value: widget.rank[1]["lowestAPP"], - label: t.statCellNum.app - .replaceAll(RegExp(r'\n'), " "), - id: widget.rank[1]["lowestAPPid"], - username: widget.rank[1]["lowestAPPnick"], - approximate: false, - fractionDigits: 3), - _ListEntry( - value: widget.rank[1]["lowestVSAPM"], - label: "VS / APM", - id: widget.rank[1]["lowestVSAPMid"], - username: widget.rank[1]["lowestVSAPMnick"], - approximate: false, - fractionDigits: 3), - _ListEntry( - value: widget.rank[1]["lowestDSS"], - label: t.statCellNum.dss - .replaceAll(RegExp(r'\n'), " "), - id: widget.rank[1]["lowestDSSid"], - username: widget.rank[1]["lowestDSSnick"], - approximate: false, - fractionDigits: 3), - _ListEntry( - value: widget.rank[1]["lowestDSP"], - label: t.statCellNum.dsp - .replaceAll(RegExp(r'\n'), " "), - id: widget.rank[1]["lowestDSPid"], - username: widget.rank[1]["lowestDSPnick"], - approximate: false, - fractionDigits: 3), - _ListEntry( - value: widget.rank[1]["lowestAPPDSP"], - label: t.statCellNum.dsp - .replaceAll(RegExp(r'\n'), " "), - id: widget.rank[1]["lowestAPPDSPid"], - username: widget.rank[1]["lowestAPPDSPnick"], - approximate: false, - fractionDigits: 3), - _ListEntry( - value: widget.rank[1]["lowestCheese"], - label: t.statCellNum.cheese - .replaceAll(RegExp(r'\n'), " "), - id: widget.rank[1]["lowestCheeseID"], - username: widget.rank[1]["lowestCheeseNick"], - approximate: false, - fractionDigits: 2), - _ListEntry( - value: widget.rank[1]["lowestGBE"], - label: t.statCellNum.gbe - .replaceAll(RegExp(r'\n'), " "), - id: widget.rank[1]["lowestGBEid"], - username: widget.rank[1]["lowestGBEnick"], - approximate: false, - fractionDigits: 3), - _ListEntry( - value: widget.rank[1]["lowestNyaAPP"], - label: t.statCellNum.nyaapp - .replaceAll(RegExp(r'\n'), " "), - id: widget.rank[1]["lowestNyaAPPid"], - username: widget.rank[1]["lowestNyaAPPnick"], - approximate: false, - fractionDigits: 3), - _ListEntry( - value: widget.rank[1]["lowestArea"], - label: t.statCellNum.area - .replaceAll(RegExp(r'\n'), " "), - id: widget.rank[1]["lowestAreaID"], - username: widget.rank[1]["lowestAreaNick"], - approximate: false, - fractionDigits: 1), - _ListEntry( - value: widget.rank[1]["lowestEstTR"], - label: t.statCellNum.estOfTR - .replaceAll(RegExp(r'\n'), " "), - id: widget.rank[1]["lowestEstTRid"], - username: widget.rank[1]["lowestEstTRnick"], - approximate: false, - fractionDigits: 2), - _ListEntry( - value: widget.rank[1]["lowestEstAcc"], - label: t.statCellNum.accOfEst - .replaceAll(RegExp(r'\n'), " "), - id: widget.rank[1]["lowestEstAccID"], - username: widget.rank[1]["lowestEstAccNick"], - approximate: false, - fractionDigits: 3), - _ListEntry( - value: widget.rank[1]["lowestOpener"], - label: "Opener", - id: widget.rank[1]["lowestOpenerID"], - username: widget.rank[1]["lowestOpenerNick"], - approximate: false, - fractionDigits: 3), - _ListEntry( - value: widget.rank[1]["lowestPlonk"], - label: "Plonk", - id: widget.rank[1]["lowestPlonkID"], - username: widget.rank[1]["lowestPlonkNick"], - approximate: false, - fractionDigits: 3), - _ListEntry( - value: widget.rank[1]["lowestStride"], - label: "Stride", - id: widget.rank[1]["lowestStrideID"], - username: widget.rank[1]["lowestStrideNick"], - approximate: false, - fractionDigits: 3), - _ListEntry( - value: widget.rank[1]["lowestInfDS"], - label: "Inf. DS", - id: widget.rank[1]["lowestInfDSid"], - username: widget.rank[1]["lowestInfDSnick"], - approximate: false, - fractionDigits: 3) + _ListEntry(value: widget.rank[1]["lowestTR"], label: t.statCellNum.tr.replaceAll(RegExp(r'\n'), " "), id: widget.rank[1]["lowestTRid"], username: widget.rank[1]["lowestTRnick"], approximate: false, fractionDigits: 2), + _ListEntry(value: widget.rank[1]["lowestGlicko"], label: "Glicko", id: widget.rank[1]["lowestGlickoID"], username: widget.rank[1]["lowestGlickoNick"], approximate: false, fractionDigits: 2), + _ListEntry(value: widget.rank[1]["lowestRD"], label: t.statCellNum.rd.replaceAll(RegExp(r'\n'), " "), id: widget.rank[1]["lowestRdID"], username: widget.rank[1]["lowestRdNick"], approximate: false, fractionDigits: 3), + _ListEntry(value: widget.rank[1]["lowestGamesPlayed"], label: t.statCellNum.gamesPlayed.replaceAll(RegExp(r'\n'), " "), id: widget.rank[1]["lowestGamesPlayedID"], username: widget.rank[1]["lowestGamesPlayedNick"], approximate: false), + _ListEntry(value: widget.rank[1]["lowestGamesWon"], label: t.statCellNum.gamesWonTL.replaceAll(RegExp(r'\n'), " "), id: widget.rank[1]["lowestGamesWonID"], username: widget.rank[1]["lowestGamesWonNick"], approximate: false), + _ListEntry(value: widget.rank[1]["lowestWinrate"] * 100, label: t.statCellNum.winrate.replaceAll(RegExp(r'\n'), " "), id: widget.rank[1]["lowestWinrateID"], username: widget.rank[1]["lowestWinrateNick"], approximate: false, fractionDigits: 2), + _ListEntry(value: widget.rank[1]["lowestAPM"], label: t.statCellNum.apm.replaceAll(RegExp(r'\n'), " "), id: widget.rank[1]["lowestAPMid"], username: widget.rank[1]["lowestAPMnick"], approximate: false, fractionDigits: 2), + _ListEntry(value: widget.rank[1]["lowestPPS"], label: t.statCellNum.pps.replaceAll(RegExp(r'\n'), " "), id: widget.rank[1]["lowestPPSid"], username: widget.rank[1]["lowestPPSnick"], approximate: false, fractionDigits: 2), + _ListEntry(value: widget.rank[1]["lowestVS"], label: t.statCellNum.vs.replaceAll(RegExp(r'\n'), " "), id: widget.rank[1]["lowestVSid"], username: widget.rank[1]["lowestVSnick"], approximate: false, fractionDigits: 2), + _ListEntry(value: widget.rank[1]["lowestAPP"], label: t.statCellNum.app.replaceAll(RegExp(r'\n'), " "), id: widget.rank[1]["lowestAPPid"], username: widget.rank[1]["lowestAPPnick"], approximate: false, fractionDigits: 3), + _ListEntry(value: widget.rank[1]["lowestVSAPM"], label: "VS / APM", id: widget.rank[1]["lowestVSAPMid"], username: widget.rank[1]["lowestVSAPMnick"], approximate: false, fractionDigits: 3), + _ListEntry(value: widget.rank[1]["lowestDSS"], label: t.statCellNum.dss.replaceAll(RegExp(r'\n'), " "), id: widget.rank[1]["lowestDSSid"], username: widget.rank[1]["lowestDSSnick"], approximate: false, fractionDigits: 3), + _ListEntry(value: widget.rank[1]["lowestDSP"], label: t.statCellNum.dsp.replaceAll(RegExp(r'\n'), " "), id: widget.rank[1]["lowestDSPid"], username: widget.rank[1]["lowestDSPnick"], approximate: false, fractionDigits: 3), + _ListEntry(value: widget.rank[1]["lowestAPPDSP"], label: t.statCellNum.dsp.replaceAll(RegExp(r'\n'), " "), id: widget.rank[1]["lowestAPPDSPid"], username: widget.rank[1]["lowestAPPDSPnick"], approximate: false, fractionDigits: 3), + _ListEntry(value: widget.rank[1]["lowestCheese"], label: t.statCellNum.cheese.replaceAll(RegExp(r'\n'), " "), id: widget.rank[1]["lowestCheeseID"], username: widget.rank[1]["lowestCheeseNick"], approximate: false, fractionDigits: 2), + _ListEntry(value: widget.rank[1]["lowestGBE"], label: t.statCellNum.gbe.replaceAll(RegExp(r'\n'), " "), id: widget.rank[1]["lowestGBEid"], username: widget.rank[1]["lowestGBEnick"], approximate: false, fractionDigits: 3), + _ListEntry(value: widget.rank[1]["lowestNyaAPP"], label: t.statCellNum.nyaapp.replaceAll(RegExp(r'\n'), " "), id: widget.rank[1]["lowestNyaAPPid"], username: widget.rank[1]["lowestNyaAPPnick"], approximate: false, fractionDigits: 3), + _ListEntry(value: widget.rank[1]["lowestArea"], label: t.statCellNum.area.replaceAll(RegExp(r'\n'), " "), id: widget.rank[1]["lowestAreaID"], username: widget.rank[1]["lowestAreaNick"], approximate: false, fractionDigits: 1), + _ListEntry(value: widget.rank[1]["lowestEstTR"], label: t.statCellNum.estOfTR.replaceAll(RegExp(r'\n'), " "), id: widget.rank[1]["lowestEstTRid"], username: widget.rank[1]["lowestEstTRnick"], approximate: false, fractionDigits: 2), + _ListEntry(value: widget.rank[1]["lowestEstAcc"], label: t.statCellNum.accOfEst.replaceAll(RegExp(r'\n'), " "), id: widget.rank[1]["lowestEstAccID"], username: widget.rank[1]["lowestEstAccNick"], approximate: false, fractionDigits: 3), + _ListEntry(value: widget.rank[1]["lowestOpener"], label: "Opener", id: widget.rank[1]["lowestOpenerID"], username: widget.rank[1]["lowestOpenerNick"], approximate: false, fractionDigits: 3), + _ListEntry(value: widget.rank[1]["lowestPlonk"], label: "Plonk", id: widget.rank[1]["lowestPlonkID"], username: widget.rank[1]["lowestPlonkNick"], approximate: false, fractionDigits: 3), + _ListEntry(value: widget.rank[1]["lowestStride"], label: "Stride", id: widget.rank[1]["lowestStrideID"], username: widget.rank[1]["lowestStrideNick"], approximate: false, fractionDigits: 3), + _ListEntry(value: widget.rank[1]["lowestInfDS"], label: "Inf. DS", id: widget.rank[1]["lowestInfDSid"], username: widget.rank[1]["lowestInfDSnick"], approximate: false, fractionDigits: 3) ], ), ), @@ -445,397 +374,66 @@ class RankState extends State with SingleTickerProviderStateMixin { ), Column( children: [ - Text(t.averageValues, - style: TextStyle( - fontFamily: "Eurostile Round Extended", - fontSize: bigScreen ? 42 : 28)), + Text(t.averageValues, style: TextStyle( fontFamily: "Eurostile Round Extended", fontSize: bigScreen ? 42 : 28)), Expanded( child: ListView(children: [ - _ListEntry( - value: widget.rank[0].rating, - label: t.statCellNum.tr - .replaceAll(RegExp(r'\n'), " "), - id: "", - username: "", - approximate: true, - fractionDigits: 2), - _ListEntry( - value: widget.rank[0].glicko, - label: "Glicko", - id: "", - username: "", - approximate: true, - fractionDigits: 2), - _ListEntry( - value: widget.rank[0].rd, - label: t.statCellNum.rd - .replaceAll(RegExp(r'\n'), " "), - id: "", - username: "", - approximate: true, - fractionDigits: 3), - _ListEntry( - value: widget.rank[0].gamesPlayed, - label: t.statCellNum.gamesPlayed - .replaceAll(RegExp(r'\n'), " "), - id: "", - username: "", - approximate: true, - fractionDigits: 0), - _ListEntry( - value: widget.rank[0].gamesWon, - label: t.statCellNum.gamesWonTL - .replaceAll(RegExp(r'\n'), " "), - id: "", - username: "", - approximate: true, - fractionDigits: 0), - _ListEntry( - value: widget.rank[0].winrate * 100, - label: t.statCellNum.winrate - .replaceAll(RegExp(r'\n'), " "), - id: "", - username: "", - approximate: true, - fractionDigits: 2), - _ListEntry( - value: widget.rank[0].apm, - label: t.statCellNum.apm - .replaceAll(RegExp(r'\n'), " "), - id: "", - username: "", - approximate: true, - fractionDigits: 2), - _ListEntry( - value: widget.rank[0].pps, - label: t.statCellNum.pps - .replaceAll(RegExp(r'\n'), " "), - id: "", - username: "", - approximate: true, - fractionDigits: 2), - _ListEntry( - value: widget.rank[0].vs, - label: t.statCellNum.vs - .replaceAll(RegExp(r'\n'), " "), - id: "", - username: "", - approximate: true, - fractionDigits: 2), - _ListEntry( - value: widget.rank[1]["avgAPP"], - label: t.statCellNum.app - .replaceAll(RegExp(r'\n'), " "), - id: "", - username: "", - approximate: true, - fractionDigits: 3), - _ListEntry( - value: widget.rank[1]["avgAPP"], - label: "VS / APM", - id: "", - username: "", - approximate: true, - fractionDigits: 3), - _ListEntry( - value: widget.rank[1]["avgDSS"], - label: t.statCellNum.dss - .replaceAll(RegExp(r'\n'), " "), - id: "", - username: "", - approximate: true, - fractionDigits: 3), - _ListEntry( - value: widget.rank[1]["avgDSP"], - label: t.statCellNum.dsp - .replaceAll(RegExp(r'\n'), " "), - id: "", - username: "", - approximate: true, - fractionDigits: 3), - _ListEntry( - value: widget.rank[1]["avgAPPDSP"], - label: t.statCellNum.dsp - .replaceAll(RegExp(r'\n'), " "), - id: "", - username: "", - approximate: true, - fractionDigits: 3), - _ListEntry( - value: widget.rank[1]["avgCheese"], - label: t.statCellNum.cheese - .replaceAll(RegExp(r'\n'), " "), - id: "", - username: "", - approximate: true, - fractionDigits: 2), - _ListEntry( - value: widget.rank[1]["avgGBE"], - label: t.statCellNum.gbe - .replaceAll(RegExp(r'\n'), " "), - id: "", - username: "", - approximate: true, - fractionDigits: 3), - _ListEntry( - value: widget.rank[1]["avgNyaAPP"], - label: t.statCellNum.nyaapp - .replaceAll(RegExp(r'\n'), " "), - id: "", - username: "", - approximate: true, - fractionDigits: 3), - _ListEntry( - value: widget.rank[1]["avgArea"], - label: t.statCellNum.area - .replaceAll(RegExp(r'\n'), " "), - id: "", - username: "", - approximate: true, - fractionDigits: 1), - _ListEntry( - value: widget.rank[1]["avgEstTR"], - label: t.statCellNum.estOfTR - .replaceAll(RegExp(r'\n'), " "), - id: "", - username: "", - approximate: true, - fractionDigits: 2), - _ListEntry( - value: widget.rank[1]["avgEstAcc"], - label: t.statCellNum.accOfEst - .replaceAll(RegExp(r'\n'), " "), - id: "", - username: "", - approximate: true, - fractionDigits: 3), - _ListEntry( - value: widget.rank[1]["avgOpener"], - label: "Opener", - id: "", - username: "", - approximate: true, - fractionDigits: 3), - _ListEntry( - value: widget.rank[1]["avgPlonk"], - label: "Plonk", - id: "", - username: "", - approximate: true, - fractionDigits: 3), - _ListEntry( - value: widget.rank[1]["avgStride"], - label: "Stride", - id: "", - username: "", - approximate: true, - fractionDigits: 3), - _ListEntry( - value: widget.rank[1]["avgInfDS"], - label: "Inf. DS", - id: "", - username: "", - approximate: true, - fractionDigits: 3), + _ListEntry(value: widget.rank[0].rating, label: t.statCellNum.tr.replaceAll(RegExp(r'\n'), " "), id: "", username: "", approximate: true, fractionDigits: 2), + _ListEntry(value: widget.rank[0].glicko, label: "Glicko", id: "", username: "", approximate: true, fractionDigits: 2), + _ListEntry(value: widget.rank[0].rd, label: t.statCellNum.rd.replaceAll(RegExp(r'\n'), " "), id: "", username: "", approximate: true, fractionDigits: 3), + _ListEntry(value: widget.rank[0].gamesPlayed, label: t.statCellNum.gamesPlayed.replaceAll(RegExp(r'\n'), " "), id: "", username: "", approximate: true, fractionDigits: 0), + _ListEntry(value: widget.rank[0].gamesWon, label: t.statCellNum.gamesWonTL.replaceAll(RegExp(r'\n'), " "), id: "", username: "", approximate: true, fractionDigits: 0), + _ListEntry(value: widget.rank[0].winrate * 100, label: t.statCellNum.winrate.replaceAll(RegExp(r'\n'), " "), id: "", username: "", approximate: true, fractionDigits: 2), + _ListEntry(value: widget.rank[0].apm, label: t.statCellNum.apm.replaceAll(RegExp(r'\n'), " "), id: "", username: "", approximate: true, fractionDigits: 2), + _ListEntry(value: widget.rank[0].pps, label: t.statCellNum.pps.replaceAll(RegExp(r'\n'), " "), id: "", username: "", approximate: true, fractionDigits: 2), + _ListEntry(value: widget.rank[0].vs, label: t.statCellNum.vs.replaceAll(RegExp(r'\n'), " "), id: "", username: "", approximate: true, fractionDigits: 2), + _ListEntry(value: widget.rank[1]["avgAPP"], label: t.statCellNum.app.replaceAll(RegExp(r'\n'), " "), id: "", username: "", approximate: true, fractionDigits: 3), + _ListEntry(value: widget.rank[1]["avgAPP"], label: "VS / APM", id: "", username: "", approximate: true, fractionDigits: 3), + _ListEntry(value: widget.rank[1]["avgDSS"], label: t.statCellNum.dss.replaceAll(RegExp(r'\n'), " "), id: "", username: "", approximate: true, fractionDigits: 3), + _ListEntry(value: widget.rank[1]["avgDSP"], label: t.statCellNum.dsp.replaceAll(RegExp(r'\n'), " "), id: "", username: "", approximate: true, fractionDigits: 3), + _ListEntry(value: widget.rank[1]["avgAPPDSP"], label: t.statCellNum.dsp.replaceAll(RegExp(r'\n'), " "), id: "", username: "", approximate: true, fractionDigits: 3), + _ListEntry(value: widget.rank[1]["avgCheese"], label: t.statCellNum.cheese.replaceAll(RegExp(r'\n'), " "), id: "", username: "", approximate: true, fractionDigits: 2), + _ListEntry(value: widget.rank[1]["avgGBE"], label: t.statCellNum.gbe.replaceAll(RegExp(r'\n'), " "), id: "", username: "", approximate: true, fractionDigits: 3), + _ListEntry(value: widget.rank[1]["avgNyaAPP"], label: t.statCellNum.nyaapp.replaceAll(RegExp(r'\n'), " "), id: "", username: "", approximate: true, fractionDigits: 3), + _ListEntry(value: widget.rank[1]["avgArea"], label: t.statCellNum.area.replaceAll(RegExp(r'\n'), " "), id: "", username: "", approximate: true, fractionDigits: 1), + _ListEntry(value: widget.rank[1]["avgEstTR"], label: t.statCellNum.estOfTR.replaceAll(RegExp(r'\n'), " "), id: "", username: "", approximate: true, fractionDigits: 2), + _ListEntry(value: widget.rank[1]["avgEstAcc"], label: t.statCellNum.accOfEst.replaceAll(RegExp(r'\n'), " "), id: "", username: "", approximate: true, fractionDigits: 3), + _ListEntry(value: widget.rank[1]["avgOpener"], label: "Opener", id: "", username: "", approximate: true, fractionDigits: 3), + _ListEntry(value: widget.rank[1]["avgPlonk"], label: "Plonk", id: "", username: "", approximate: true, fractionDigits: 3), + _ListEntry(value: widget.rank[1]["avgStride"], label: "Stride", id: "", username: "", approximate: true, fractionDigits: 3), + _ListEntry(value: widget.rank[1]["avgInfDS"], label: "Inf. DS", id: "", username: "", approximate: true, fractionDigits: 3), ])) ], ), Column( children: [ - Text(t.highestValues, - style: TextStyle( - fontFamily: "Eurostile Round Extended", - fontSize: bigScreen ? 42 : 28)), + Text(t.highestValues, style: TextStyle(fontFamily: "Eurostile Round Extended", fontSize: bigScreen ? 42 : 28)), Expanded( child: ListView( children: [ - _ListEntry( - value: widget.rank[1]["highestTR"], - label: t.statCellNum.tr - .replaceAll(RegExp(r'\n'), " "), - id: widget.rank[1]["highestTRid"], - username: widget.rank[1]["highestTRnick"], - approximate: false, - fractionDigits: 2), - _ListEntry( - value: widget.rank[1]["highestGlicko"], - label: "Glicko", - id: widget.rank[1]["highestGlickoID"], - username: widget.rank[1]["highestGlickoNick"], - approximate: false, - fractionDigits: 2), - _ListEntry( - value: widget.rank[1]["highestRD"], - label: t.statCellNum.rd - .replaceAll(RegExp(r'\n'), " "), - id: widget.rank[1]["highestRdID"], - username: widget.rank[1]["highestRdNick"], - approximate: false, - fractionDigits: 3), - _ListEntry( - value: widget.rank[1]["highestGamesPlayed"], - label: t.statCellNum.gamesPlayed - .replaceAll(RegExp(r'\n'), " "), - id: widget.rank[1]["highestGamesPlayedID"], - username: widget.rank[1] - ["highestGamesPlayedNick"], - approximate: false), - _ListEntry( - value: widget.rank[1]["highestGamesWon"], - label: t.statCellNum.gamesWonTL - .replaceAll(RegExp(r'\n'), " "), - id: widget.rank[1]["highestGamesWonID"], - username: widget.rank[1] - ["highestGamesWonNick"], - approximate: false), - _ListEntry( - value: widget.rank[1]["highestWinrate"] * 100, - label: t.statCellNum.winrate - .replaceAll(RegExp(r'\n'), " "), - id: widget.rank[1]["highestWinrateID"], - username: widget.rank[1] - ["highestWinrateNick"], - approximate: false, - fractionDigits: 2), - _ListEntry( - value: widget.rank[1]["highestAPM"], - label: t.statCellNum.apm - .replaceAll(RegExp(r'\n'), " "), - id: widget.rank[1]["highestAPMid"], - username: widget.rank[1]["highestAPMnick"], - approximate: false, - fractionDigits: 2), - _ListEntry( - value: widget.rank[1]["highestPPS"], - label: t.statCellNum.pps - .replaceAll(RegExp(r'\n'), " "), - id: widget.rank[1]["highestPPSid"], - username: widget.rank[1]["highestPPSnick"], - approximate: false, - fractionDigits: 2), - _ListEntry( - value: widget.rank[1]["highestVS"], - label: t.statCellNum.vs - .replaceAll(RegExp(r'\n'), " "), - id: widget.rank[1]["highestVSid"], - username: widget.rank[1]["highestVSnick"], - approximate: false, - fractionDigits: 2), - _ListEntry( - value: widget.rank[1]["highestAPP"], - label: t.statCellNum.app - .replaceAll(RegExp(r'\n'), " "), - id: widget.rank[1]["highestAPPid"], - username: widget.rank[1]["highestAPPnick"], - approximate: false, - fractionDigits: 3), - _ListEntry( - value: widget.rank[1]["highestVSAPM"], - label: "VS / APM", - id: widget.rank[1]["highestVSAPMid"], - username: widget.rank[1]["highestVSAPMnick"], - approximate: false, - fractionDigits: 3), - _ListEntry( - value: widget.rank[1]["highestDSS"], - label: t.statCellNum.dss - .replaceAll(RegExp(r'\n'), " "), - id: widget.rank[1]["highestDSSid"], - username: widget.rank[1]["highestDSSnick"], - approximate: false, - fractionDigits: 3), - _ListEntry( - value: widget.rank[1]["highestDSP"], - label: t.statCellNum.dsp - .replaceAll(RegExp(r'\n'), " "), - id: widget.rank[1]["highestDSPid"], - username: widget.rank[1]["highestDSPnick"], - approximate: false, - fractionDigits: 3), - _ListEntry( - value: widget.rank[1]["highestAPPDSP"], - label: t.statCellNum.dsp - .replaceAll(RegExp(r'\n'), " "), - id: widget.rank[1]["highestAPPDSPid"], - username: widget.rank[1]["highestAPPDSPnick"], - approximate: false, - fractionDigits: 3), - _ListEntry( - value: widget.rank[1]["highestCheese"], - label: t.statCellNum.cheese - .replaceAll(RegExp(r'\n'), " "), - id: widget.rank[1]["highestCheeseID"], - username: widget.rank[1]["highestCheeseNick"], - approximate: false, - fractionDigits: 2), - _ListEntry( - value: widget.rank[1]["highestGBE"], - label: t.statCellNum.gbe - .replaceAll(RegExp(r'\n'), " "), - id: widget.rank[1]["highestGBEid"], - username: widget.rank[1]["highestGBEnick"], - approximate: false, - fractionDigits: 3), - _ListEntry( - value: widget.rank[1]["highestNyaAPP"], - label: t.statCellNum.nyaapp - .replaceAll(RegExp(r'\n'), " "), - id: widget.rank[1]["highestNyaAPPid"], - username: widget.rank[1]["highestNyaAPPnick"], - approximate: false, - fractionDigits: 3), - _ListEntry( - value: widget.rank[1]["highestArea"], - label: t.statCellNum.area - .replaceAll(RegExp(r'\n'), " "), - id: widget.rank[1]["highestAreaID"], - username: widget.rank[1]["highestAreaNick"], - approximate: false, - fractionDigits: 1), - _ListEntry( - value: widget.rank[1]["highestEstTR"], - label: t.statCellNum.estOfTR - .replaceAll(RegExp(r'\n'), " "), - id: widget.rank[1]["highestEstTRid"], - username: widget.rank[1]["highestEstTRnick"], - approximate: false, - fractionDigits: 2), - _ListEntry( - value: widget.rank[1]["highestEstAcc"], - label: t.statCellNum.accOfEst - .replaceAll(RegExp(r'\n'), " "), - id: widget.rank[1]["highestEstAccID"], - username: widget.rank[1]["highestEstAccNick"], - approximate: false, - fractionDigits: 3), - _ListEntry( - value: widget.rank[1]["highestOpener"], - label: "Opener", - id: widget.rank[1]["highestOpenerID"], - username: widget.rank[1]["highestOpenerNick"], - approximate: false, - fractionDigits: 3), - _ListEntry( - value: widget.rank[1]["highestPlonk"], - label: "Plonk", - id: widget.rank[1]["highestPlonkID"], - username: widget.rank[1]["highestPlonkNick"], - approximate: false, - fractionDigits: 3), - _ListEntry( - value: widget.rank[1]["highestStride"], - label: "Stride", - id: widget.rank[1]["highestStrideID"], - username: widget.rank[1]["highestStrideNick"], - approximate: false, - fractionDigits: 3), - _ListEntry( - value: widget.rank[1]["highestInfDS"], - label: "Inf. DS", - id: widget.rank[1]["highestInfDSid"], - username: widget.rank[1]["highestInfDSnick"], - approximate: false, - fractionDigits: 3), + _ListEntry(value: widget.rank[1]["highestTR"], label: t.statCellNum.tr.replaceAll(RegExp(r'\n'), " "), id: widget.rank[1]["highestTRid"], username: widget.rank[1]["highestTRnick"], approximate: false, fractionDigits: 2), + _ListEntry(value: widget.rank[1]["highestGlicko"], label: "Glicko", id: widget.rank[1]["highestGlickoID"], username: widget.rank[1]["highestGlickoNick"], approximate: false, fractionDigits: 2), + _ListEntry(value: widget.rank[1]["highestRD"], label: t.statCellNum.rd.replaceAll(RegExp(r'\n'), " "), id: widget.rank[1]["highestRdID"], username: widget.rank[1]["highestRdNick"], approximate: false, fractionDigits: 3), + _ListEntry(value: widget.rank[1]["highestGamesPlayed"], label: t.statCellNum.gamesPlayed.replaceAll(RegExp(r'\n'), " "), id: widget.rank[1]["highestGamesPlayedID"], username: widget.rank[1]["highestGamesPlayedNick"], approximate: false), + _ListEntry(value: widget.rank[1]["highestGamesWon"], label: t.statCellNum.gamesWonTL.replaceAll(RegExp(r'\n'), " "), id: widget.rank[1]["highestGamesWonID"], username: widget.rank[1]["highestGamesWonNick"], approximate: false), + _ListEntry(value: widget.rank[1]["highestWinrate"] * 100, label: t.statCellNum.winrate.replaceAll(RegExp(r'\n'), " "), id: widget.rank[1]["highestWinrateID"], username: widget.rank[1]["highestWinrateNick"], approximate: false, fractionDigits: 2), + _ListEntry(value: widget.rank[1]["highestAPM"], label: t.statCellNum.apm.replaceAll(RegExp(r'\n'), " "), id: widget.rank[1]["highestAPMid"], username: widget.rank[1]["highestAPMnick"], approximate: false, fractionDigits: 2), + _ListEntry(value: widget.rank[1]["highestPPS"], label: t.statCellNum.pps.replaceAll(RegExp(r'\n'), " "), id: widget.rank[1]["highestPPSid"], username: widget.rank[1]["highestPPSnick"], approximate: false, fractionDigits: 2), + _ListEntry(value: widget.rank[1]["highestVS"], label: t.statCellNum.vs.replaceAll(RegExp(r'\n'), " "), id: widget.rank[1]["highestVSid"], username: widget.rank[1]["highestVSnick"], approximate: false, fractionDigits: 2), + _ListEntry(value: widget.rank[1]["highestAPP"], label: t.statCellNum.app.replaceAll(RegExp(r'\n'), " "), id: widget.rank[1]["highestAPPid"], username: widget.rank[1]["highestAPPnick"], approximate: false, fractionDigits: 3), + _ListEntry(value: widget.rank[1]["highestVSAPM"], label: "VS / APM", id: widget.rank[1]["highestVSAPMid"], username: widget.rank[1]["highestVSAPMnick"], approximate: false, fractionDigits: 3), + _ListEntry(value: widget.rank[1]["highestDSS"], label: t.statCellNum.dss.replaceAll(RegExp(r'\n'), " "), id: widget.rank[1]["highestDSSid"], username: widget.rank[1]["highestDSSnick"], approximate: false, fractionDigits: 3), + _ListEntry(value: widget.rank[1]["highestDSP"], label: t.statCellNum.dsp.replaceAll(RegExp(r'\n'), " "), id: widget.rank[1]["highestDSPid"], username: widget.rank[1]["highestDSPnick"], approximate: false, fractionDigits: 3), + _ListEntry(value: widget.rank[1]["highestAPPDSP"], label: t.statCellNum.dsp.replaceAll(RegExp(r'\n'), " "), id: widget.rank[1]["highestAPPDSPid"], username: widget.rank[1]["highestAPPDSPnick"], approximate: false, fractionDigits: 3), + _ListEntry(value: widget.rank[1]["highestCheese"], label: t.statCellNum.cheese.replaceAll(RegExp(r'\n'), " "), id: widget.rank[1]["highestCheeseID"], username: widget.rank[1]["highestCheeseNick"], approximate: false, fractionDigits: 2), + _ListEntry(value: widget.rank[1]["highestGBE"], label: t.statCellNum.gbe.replaceAll(RegExp(r'\n'), " "), id: widget.rank[1]["highestGBEid"], username: widget.rank[1]["highestGBEnick"], approximate: false, fractionDigits: 3), + _ListEntry(value: widget.rank[1]["highestNyaAPP"], label: t.statCellNum.nyaapp.replaceAll(RegExp(r'\n'), " "), id: widget.rank[1]["highestNyaAPPid"], username: widget.rank[1]["highestNyaAPPnick"], approximate: false, fractionDigits: 3), + _ListEntry(value: widget.rank[1]["highestArea"], label: t.statCellNum.area.replaceAll(RegExp(r'\n'), " "), id: widget.rank[1]["highestAreaID"], username: widget.rank[1]["highestAreaNick"], approximate: false, fractionDigits: 1), + _ListEntry(value: widget.rank[1]["highestEstTR"], label: t.statCellNum.estOfTR.replaceAll(RegExp(r'\n'), " "), id: widget.rank[1]["highestEstTRid"], username: widget.rank[1]["highestEstTRnick"], approximate: false, fractionDigits: 2), + _ListEntry(value: widget.rank[1]["highestEstAcc"], label: t.statCellNum.accOfEst.replaceAll(RegExp(r'\n'), " "), id: widget.rank[1]["highestEstAccID"], username: widget.rank[1]["highestEstAccNick"], approximate: false, fractionDigits: 3), + _ListEntry(value: widget.rank[1]["highestOpener"], label: "Opener", id: widget.rank[1]["highestOpenerID"], username: widget.rank[1]["highestOpenerNick"], approximate: false, fractionDigits: 3), + _ListEntry(value: widget.rank[1]["highestPlonk"], label: "Plonk", id: widget.rank[1]["highestPlonkID"], username: widget.rank[1]["highestPlonkNick"], approximate: false, fractionDigits: 3), + _ListEntry(value: widget.rank[1]["highestStride"], label: "Stride", id: widget.rank[1]["highestStrideID"], username: widget.rank[1]["highestStrideNick"], approximate: false, fractionDigits: 3), + _ListEntry(value: widget.rank[1]["highestInfDS"], label: "Inf. DS", id: widget.rank[1]["highestInfDSid"], username: widget.rank[1]["highestInfDSnick"], approximate: false, fractionDigits: 3), ], ), ) @@ -843,37 +441,12 @@ class RankState extends State with SingleTickerProviderStateMixin { ), Column( children: [ - Expanded( - child: ListView( - children: [ - _ListEntry( - value: widget.rank[1]["totalGamesPlayed"], - label: t.statCellNum.totalGames, - id: "", - username: "", - approximate: true, - fractionDigits: 0), - _ListEntry( - value: widget.rank[1]["totalGamesWon"], - label: t.statCellNum.totalWon, - id: "", - username: "", - approximate: true, - fractionDigits: 0), - _ListEntry( - value: (widget.rank[1]["totalGamesWon"] / - widget.rank[1]["totalGamesPlayed"]) * - 100, - label: t.statCellNum.winrate - .replaceAll(RegExp(r'\n'), " "), - id: "", - username: "", - approximate: true, - fractionDigits: 3), - - ] - ) - ) + Expanded( + child: ListView(children: [ + _ListEntry(value: widget.rank[1]["totalGamesPlayed"], label: t.statCellNum.totalGames, id: "", username: "", approximate: true, fractionDigits: 0), + _ListEntry(value: widget.rank[1]["totalGamesWon"], label: t.statCellNum.totalWon, id: "", username: "", approximate: true, fractionDigits: 0), + _ListEntry(value: (widget.rank[1]["totalGamesWon"] / widget.rank[1]["totalGamesPlayed"]) * 100, label: t.statCellNum.winrate.replaceAll(RegExp(r'\n'), " "), id: "", username: "", approximate: true, fractionDigits: 3), + ])) ], ), ], @@ -926,10 +499,10 @@ class _ListEntry extends StatelessWidget { ); } } -class _MyScatterSpot extends ScatterSpot{ + +class _MyScatterSpot extends ScatterSpot { String id; String nickname; _MyScatterSpot(super.x, super.y, this.id, this.nickname, {super.color}); - -} \ No newline at end of file +} diff --git a/lib/views/tl_leaderboard_view.dart b/lib/views/tl_leaderboard_view.dart index 540d368..d19fda3 100644 --- a/lib/views/tl_leaderboard_view.dart +++ b/lib/views/tl_leaderboard_view.dart @@ -158,8 +158,7 @@ class TLLeaderboardState extends State { return ListTile( leading: Text((index+1).toString(), style: bigScreen ? const TextStyle(fontFamily: "Eurostile Round Extended", fontSize: 28) : null), title: Text(allPlayers[index].username, style: const TextStyle(fontFamily: "Eurostile Round Extended")), - subtitle: Text( - sortBy == Stats.tr ? "${f2.format(allPlayers[index].apm)} APM, ${f2.format(allPlayers[index].pps)} PPS, ${f2.format(allPlayers[index].vs)} VS, ${f2.format(allPlayers[index].nerdStats.app)} APP, ${f2.format(allPlayers[index].nerdStats.vsapm)} VS/APM" : "${f4.format(allPlayers[index].getStatByEnum(sortBy))} ${chartsShortTitles[sortBy]}"), + subtitle: Text(sortBy == Stats.tr ? "${f2.format(allPlayers[index].apm)} APM, ${f2.format(allPlayers[index].pps)} PPS, ${f2.format(allPlayers[index].vs)} VS, ${f2.format(allPlayers[index].nerdStats.app)} APP, ${f2.format(allPlayers[index].nerdStats.vsapm)} VS/APM" : "${f4.format(allPlayers[index].getStatByEnum(sortBy))} ${chartsShortTitles[sortBy]}"), trailing: Row( mainAxisSize: MainAxisSize.min, children: [ diff --git a/lib/widgets/stat_sell_num.dart b/lib/widgets/stat_sell_num.dart index 6ddf718..f5659ff 100644 --- a/lib/widgets/stat_sell_num.dart +++ b/lib/widgets/stat_sell_num.dart @@ -47,6 +47,7 @@ class StatCellNum extends StatelessWidget { style: const TextStyle( fontFamily: "Eurostile Round", fontSize: 16, + height: 1.1 ), ) : TextButton( @@ -76,6 +77,7 @@ class StatCellNum extends StatelessWidget { style: const TextStyle( fontFamily: "Eurostile Round", fontSize: 16, + height: 1.1 ), )), ], diff --git a/lib/widgets/tl_thingy.dart b/lib/widgets/tl_thingy.dart index 8a7072f..8367812 100644 --- a/lib/widgets/tl_thingy.dart +++ b/lib/widgets/tl_thingy.dart @@ -367,15 +367,9 @@ class TLThingy extends StatelessWidget { getTitle: (index, angle) { switch (index) { case 0: - return RadarChartTitle( - text: 'APM', - angle: angle, - ); + return RadarChartTitle(text: 'APM', angle: angle, positionPercentageOffset: 0.05); case 1: - return RadarChartTitle( - text: 'PPS', - angle: angle, - ); + return RadarChartTitle(text: 'PPS', angle: angle, positionPercentageOffset: 0.05); case 2: return RadarChartTitle(text: 'VS', angle: angle, positionPercentageOffset: 0.05); case 3: diff --git a/pubspec.lock b/pubspec.lock index 95ed1f6..ccb4034 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -21,10 +21,10 @@ packages: dependency: transitive description: name: archive - sha256: "0c8368c9b3f0abbc193b9d6133649a614204b528982bebc7026372d61677ce3a" + sha256: "49b1fad315e57ab0bbc15bcbb874e83116a1d78f77ebd500a4af6c9407d6b28e" url: "https://pub.dev" source: hosted - version: "3.3.7" + version: "3.3.8" args: dependency: transitive description: @@ -117,10 +117,10 @@ packages: dependency: transitive description: name: cross_file - sha256: "0b0036e8cccbfbe0555fd83c1d31a6f30b77a96b598b35a5d36dd41f718695e9" + sha256: fd832b5384d0d6da4f6df60b854d33accaaeb63aa9e10e736a87381f08dee2cb url: "https://pub.dev" source: hosted - version: "0.3.3+4" + version: "0.3.3+5" crypto: dependency: transitive description: @@ -141,10 +141,10 @@ packages: dependency: "direct main" description: name: cupertino_icons - sha256: e35129dc44c9118cee2a5603506d823bab99c68393879edb440e0090d07586be + sha256: d57953e10f9f8327ce64a508a355f0b1ec902193f66288e8cb5070e7c47eeb2d url: "https://pub.dev" source: hosted - version: "1.0.5" + version: "1.0.6" dev_test: dependency: transitive description: @@ -173,10 +173,10 @@ packages: dependency: transitive description: name: ffi - sha256: ed5337a5660c506388a9f012be0288fb38b49020ce2b45fe1f8b8323fe429f99 + sha256: "7bf0adc28a23d395f19f3f1eb21dd7cfd1dd9f8e1c50051c069122e6853bc878" url: "https://pub.dev" source: hosted - version: "2.0.2" + version: "2.1.0" file: dependency: transitive description: @@ -189,82 +189,82 @@ packages: dependency: "direct main" description: name: file_picker - sha256: b1729fc96627dd44012d0a901558177418818d6bd428df59dcfeb594e5f66432 + sha256: be325344c1f3070354a1d84a231a1ba75ea85d413774ec4bdf444c023342e030 url: "https://pub.dev" source: hosted - version: "5.3.2" + version: "5.5.0" file_selector: dependency: "direct main" description: name: file_selector - sha256: "1d2fde93dddf634a9c3c0faa748169d7ac0d83757135555707e52f02c017ad4f" + sha256: "84eaf3e034d647859167d1f01cfe7b6352488f34c1b4932635012b202014c25b" url: "https://pub.dev" source: hosted - version: "0.9.5" + version: "1.0.1" file_selector_android: dependency: transitive description: name: file_selector_android - sha256: "43e5c719f671b9181bef1bf2851135c3ad993a9a6c804a4ccb07579cfee84e34" + sha256: d41e165d6f798ca941d536e5dc93494d50e78c571c28ad60cfe0b0fefeb9f1e7 url: "https://pub.dev" source: hosted - version: "0.5.0+2" + version: "0.5.0+3" file_selector_ios: dependency: transitive description: name: file_selector_ios - sha256: "54542b6b35e3ced6246df5fae13cf0b879d14669d0fdff1a53a098f16e23328b" + sha256: b3fbdda64aa2e335df6e111f6b0f1bb968402ed81d2dd1fa4274267999aa32c2 url: "https://pub.dev" source: hosted - version: "0.5.1+4" + version: "0.5.1+6" file_selector_linux: dependency: transitive description: name: file_selector_linux - sha256: "770eb1ab057b5ae4326d1c24cc57710758b9a46026349d021d6311bd27580046" + sha256: "045d372bf19b02aeb69cacf8b4009555fb5f6f0b7ad8016e5f46dd1387ddd492" url: "https://pub.dev" source: hosted - version: "0.9.2" + version: "0.9.2+1" file_selector_macos: dependency: transitive description: name: file_selector_macos - sha256: "4ada532862917bf16e3adb3891fe3a5917a58bae03293e497082203a80909412" + sha256: "182c3f8350cee659f7b115e956047ee3dc672a96665883a545e81581b9a82c72" url: "https://pub.dev" source: hosted - version: "0.9.3+1" + version: "0.9.3+2" file_selector_platform_interface: dependency: transitive description: name: file_selector_platform_interface - sha256: "412705a646a0ae90f33f37acfae6a0f7cbc02222d6cd34e479421c3e74d3853c" + sha256: "0aa47a725c346825a2bd396343ce63ac00bda6eff2fbc43eabe99737dede8262" url: "https://pub.dev" source: hosted - version: "2.6.0" + version: "2.6.1" file_selector_web: dependency: transitive description: name: file_selector_web - sha256: e292740c469df0aeeaba0895bf622bea351a05e87d22864c826bf21c4780e1d7 + sha256: dc6622c4d66cb1bee623ddcc029036603c6cc45c85e4a775bb06008d61c809c1 url: "https://pub.dev" source: hosted - version: "0.9.2" + version: "0.9.2+1" file_selector_windows: dependency: transitive description: name: file_selector_windows - sha256: "1372760c6b389842b77156203308940558a2817360154084368608413835fc26" + sha256: d3547240c20cabf205c7c7f01a50ecdbc413755814d6677f3cb366f04abcead0 url: "https://pub.dev" source: hosted - version: "0.9.3" + version: "0.9.3+1" fl_chart: dependency: "direct main" description: name: fl_chart - sha256: "48a1b69be9544e2b03d9a8e843affd89e43f3194c9248776222efcb4206bb1ec" + sha256: c1e26c7e48496be85104c16c040950b0436674cdf0737f3f6e95511b2529b592 url: "https://pub.dev" source: hosted - version: "0.62.0" + version: "0.63.0" flutter: dependency: "direct main" description: flutter @@ -282,10 +282,10 @@ packages: dependency: "direct dev" description: name: flutter_lints - sha256: "2118df84ef0c3ca93f96123a616ae8540879991b8b57af2f81b76a7ada49b2a4" + sha256: a25a15ebbdfc33ab1cd26c63a6ee519df92338a9c10f122adda92938253bef04 url: "https://pub.dev" source: hosted - version: "2.0.2" + version: "2.0.3" flutter_localizations: dependency: "direct main" description: flutter @@ -295,10 +295,10 @@ packages: dependency: transitive description: name: flutter_plugin_android_lifecycle - sha256: "950e77c2bbe1692bc0874fc7fb491b96a4dc340457f4ea1641443d0a6c1ea360" + sha256: f185ac890306b5779ecbd611f52502d8d4d63d27703ef73161ca0407e815f02c url: "https://pub.dev" source: hosted - version: "2.0.15" + version: "2.0.16" flutter_svg: dependency: "direct main" description: @@ -473,10 +473,10 @@ packages: dependency: "direct main" description: name: package_info_plus - sha256: ceb027f6bc6a60674a233b4a90a7658af1aebdea833da0b5b53c1e9821a78c7b + sha256: "6ff267fcd9d48cb61c8df74a82680e8b82e940231bb5f68356672fde0397334a" url: "https://pub.dev" source: hosted - version: "4.0.2" + version: "4.1.0" package_info_plus_platform_interface: dependency: transitive description: @@ -505,50 +505,50 @@ packages: dependency: "direct main" description: name: path_provider - sha256: "3087813781ab814e4157b172f1a11c46be20179fcc9bea043e0fba36bc0acaa2" + sha256: a1aa8aaa2542a6bc57e381f132af822420216c80d4781f7aa085ca3229208aaa url: "https://pub.dev" source: hosted - version: "2.0.15" + version: "2.1.1" path_provider_android: dependency: transitive description: name: path_provider_android - sha256: "2cec049d282c7f13c594b4a73976b0b4f2d7a1838a6dd5aaf7bd9719196bee86" + sha256: "6b8b19bd80da4f11ce91b2d1fb931f3006911477cec227cce23d3253d80df3f1" url: "https://pub.dev" source: hosted - version: "2.0.27" + version: "2.2.0" path_provider_foundation: dependency: transitive description: name: path_provider_foundation - sha256: "916731ccbdce44d545414dd9961f26ba5fbaa74bcbb55237d8e65a623a8c7297" + sha256: "19314d595120f82aca0ba62787d58dde2cc6b5df7d2f0daf72489e38d1b57f2d" url: "https://pub.dev" source: hosted - version: "2.2.4" + version: "2.3.1" path_provider_linux: dependency: transitive description: name: path_provider_linux - sha256: ffbb8cc9ed2c9ec0e4b7a541e56fd79b138e8f47d2fb86815f15358a349b3b57 + sha256: f7a1fe3a634fe7734c8d3f2766ad746ae2a2884abe22e241a8b301bf5cac3279 url: "https://pub.dev" source: hosted - version: "2.1.11" + version: "2.2.1" path_provider_platform_interface: dependency: transitive description: name: path_provider_platform_interface - sha256: "57585299a729335f1298b43245842678cb9f43a6310351b18fb577d6e33165ec" + sha256: "94b1e0dd80970c1ce43d5d4e050a9918fce4f4a775e6142424c30a29a363265c" url: "https://pub.dev" source: hosted - version: "2.0.6" + version: "2.1.1" path_provider_windows: dependency: transitive description: name: path_provider_windows - sha256: "1cb68ba4cd3a795033de62ba1b7b4564dace301f952de6bfb3cd91b202b6ee96" + sha256: "8bc9f22eee8690981c22aa7fc602f5c85b497a6fb2ceb35ee5a5e5ed85ad8170" url: "https://pub.dev" source: hosted - version: "2.1.7" + version: "2.2.1" petitparser: dependency: transitive description: @@ -561,18 +561,18 @@ packages: dependency: transitive description: name: platform - sha256: "4a451831508d7d6ca779f7ac6e212b4023dd5a7d08a27a63da33756410e32b76" + sha256: ae68c7bfcd7383af3629daafb32fb4e8681c7154428da4febcff06200585f102 url: "https://pub.dev" source: hosted - version: "3.1.0" + version: "3.1.2" plugin_platform_interface: dependency: transitive description: name: plugin_platform_interface - sha256: "6a2128648c854906c53fa8e33986fc0247a1116122f9534dd20e3ab9e16a32bc" + sha256: da3fdfeccc4d4ff2da8f8c556704c08f912542c5fb3cf2233ed75372384a034d url: "https://pub.dev" source: hosted - version: "2.1.4" + version: "2.1.6" pointycastle: dependency: transitive description: @@ -593,10 +593,10 @@ packages: dependency: transitive description: name: process_run - sha256: "0071cece7ca0fdf4aaf2cf84ee3082f3043f18afc7fcfd51f53f9424a8072c04" + sha256: ceacfac6d566a36c895d64edc7e429efb2d6b6303b5e28d5c13bc59fe6e8974e url: "https://pub.dev" source: hosted - version: "0.13.0" + version: "0.13.1" pub_semver: dependency: transitive description: @@ -609,58 +609,58 @@ packages: dependency: "direct main" description: name: shared_preferences - sha256: "0344316c947ffeb3a529eac929e1978fcd37c26be4e8468628bac399365a3ca1" + sha256: b7f41bad7e521d205998772545de63ff4e6c97714775902c199353f8bf1511ac url: "https://pub.dev" source: hosted - version: "2.2.0" + version: "2.2.1" shared_preferences_android: dependency: transitive description: name: shared_preferences_android - sha256: fe8401ec5b6dcd739a0fe9588802069e608c3fdbfd3c3c93e546cf2f90438076 + sha256: "8568a389334b6e83415b6aae55378e158fbc2314e074983362d20c562780fb06" url: "https://pub.dev" source: hosted - version: "2.2.0" + version: "2.2.1" shared_preferences_foundation: dependency: transitive description: name: shared_preferences_foundation - sha256: f39696b83e844923b642ce9dd4bd31736c17e697f6731a5adf445b1274cf3cd4 + sha256: "7bf53a9f2d007329ee6f3df7268fd498f8373602f943c975598bbb34649b62a7" url: "https://pub.dev" source: hosted - version: "2.3.2" + version: "2.3.4" shared_preferences_linux: dependency: transitive description: name: shared_preferences_linux - sha256: "71d6806d1449b0a9d4e85e0c7a917771e672a3d5dc61149cc9fac871115018e1" + sha256: c2eb5bf57a2fe9ad6988121609e47d3e07bb3bdca5b6f8444e4cf302428a128a url: "https://pub.dev" source: hosted - version: "2.3.0" + version: "2.3.1" shared_preferences_platform_interface: dependency: transitive description: name: shared_preferences_platform_interface - sha256: "23b052f17a25b90ff2b61aad4cc962154da76fb62848a9ce088efe30d7c50ab1" + sha256: d4ec5fc9ebb2f2e056c617112aa75dcf92fc2e4faaf2ae999caa297473f75d8a url: "https://pub.dev" source: hosted - version: "2.3.0" + version: "2.3.1" shared_preferences_web: dependency: transitive description: name: shared_preferences_web - sha256: "7347b194fb0bbeb4058e6a4e87ee70350b6b2b90f8ac5f8bd5b3a01548f6d33a" + sha256: d762709c2bbe80626ecc819143013cc820fa49ca5e363620ee20a8b15a3e3daf url: "https://pub.dev" source: hosted - version: "2.2.0" + version: "2.2.1" shared_preferences_windows: dependency: transitive description: name: shared_preferences_windows - sha256: f95e6a43162bce43c9c3405f3eb6f39e5b5d11f65fab19196cf8225e2777624d + sha256: f763a101313bd3be87edffe0560037500967de9c394a714cd598d945517f694f url: "https://pub.dev" source: hosted - version: "2.3.0" + version: "2.3.1" shelf: dependency: transitive description: @@ -702,18 +702,18 @@ packages: dependency: "direct main" description: name: slang - sha256: "68162dc10567b44ef39e8c5ed5a066d7c9b078c8b1b10ee49f713faa43e89a07" + sha256: "45a2ff7f32d8db403226689c88f895df454ebc01fedf08266c6d62d52190afa6" url: "https://pub.dev" source: hosted - version: "3.21.0" + version: "3.23.0" slang_flutter: dependency: "direct main" description: name: slang_flutter - sha256: b9c63bf4b0088edde5a09264ac86304f0acec9015aea743f9fa08946d08b832f + sha256: b2d7b4be6c5076e777b7c80a02279d661dcdc4e8758fd0ac56b125f1db5d203e url: "https://pub.dev" source: hosted - version: "3.21.0" + version: "3.23.0" source_map_stack_trace: dependency: transitive description: @@ -742,50 +742,50 @@ packages: dependency: "direct main" description: name: sqflite - sha256: b4d6710e1200e96845747e37338ea8a819a12b51689a3bcf31eff0003b37a0b9 + sha256: "591f1602816e9c31377d5f008c2d9ef7b8aca8941c3f89cc5fd9d84da0c38a9a" url: "https://pub.dev" source: hosted - version: "2.2.8+4" + version: "2.3.0" sqflite_common: dependency: transitive description: name: sqflite_common - sha256: "8f7603f3f8f126740bc55c4ca2d1027aab4b74a1267a3e31ce51fe40e3b65b8f" + sha256: "1b92f368f44b0dee2425bb861cfa17b6f6cf3961f762ff6f941d20b33355660a" url: "https://pub.dev" source: hosted - version: "2.4.5+1" + version: "2.5.0" sqflite_common_ffi: dependency: "direct main" description: name: sqflite_common_ffi - sha256: f86de82d37403af491b21920a696b19f01465b596f545d1acd4d29a0a72418ad + sha256: "0d5cc1be2eb18400ac6701c31211d44164393aa75886093002ecdd947be04f93" url: "https://pub.dev" source: hosted - version: "2.2.5" + version: "2.3.0+2" sqflite_common_ffi_web: dependency: "direct main" description: name: sqflite_common_ffi_web - sha256: eb8cd50fa1451e8fa5edf5860d68d504572afaf1e68079933f95e95bf273d445 + sha256: db9a7ef6adcfb6c9b4115f628c1d3efe3774b385309a80e75c1bafb97da2c9d1 url: "https://pub.dev" source: hosted - version: "0.3.6" + version: "0.4.0" sqlite3: dependency: transitive description: name: sqlite3 - sha256: f7511ddd6a2dda8ded9d849f8a925bb6020e0faa59db2443debc18d484e59401 + sha256: db65233e6b99e99b2548932f55a987961bc06d82a31a0665451fa0b4fff4c3fb url: "https://pub.dev" source: hosted - version: "2.0.0" + version: "2.1.0" sqlite3_flutter_libs: dependency: "direct main" description: name: sqlite3_flutter_libs - sha256: "1e20a88d5c7ae8400e009f38ddbe8b001800a6dffa37832481a86a219bc904c7" + sha256: fb115050b0c2589afe2085a62d77f5deda4db65db20a5c65a6e0c92fda89b45e url: "https://pub.dev" source: hosted - version: "0.5.15" + version: "0.5.16" stack_trace: dependency: transitive description: @@ -814,18 +814,18 @@ packages: dependency: transitive description: name: syncfusion_flutter_core - sha256: "83e0937c1d747003e7d2514d093a28101953737a155ad7a1465006a95aa78cd4" + sha256: "2baf60cd245a21a7069f036bbca1ca222633d38f57748e133da97a305712627c" url: "https://pub.dev" source: hosted - version: "22.1.39" + version: "22.2.11" syncfusion_flutter_gauges: dependency: "direct main" description: name: syncfusion_flutter_gauges - sha256: eb2b8dbe39b82224d8e6fcce359d5f463e49e74f00854bb0e0db43736b7e504e + sha256: c086f17e84452e809b12f9832763ec4cea347b9f6e1e662a0e8addabca6cc2e5 url: "https://pub.dev" source: hosted - version: "22.1.39" + version: "22.2.11" synchronized: dependency: transitive description: @@ -878,66 +878,66 @@ packages: dependency: "direct main" description: name: url_launcher - sha256: "781bd58a1eb16069412365c98597726cd8810ae27435f04b3b4d3a470bacd61e" + sha256: "47e208a6711459d813ba18af120d9663c20bdf6985d6ad39fe165d2538378d27" url: "https://pub.dev" source: hosted - version: "6.1.12" + version: "6.1.14" url_launcher_android: dependency: transitive description: name: url_launcher_android - sha256: "15f5acbf0dce90146a0f5a2c4a002b1814a6303c4c5c075aa2623b2d16156f03" + sha256: b04af59516ab45762b2ca6da40fa830d72d0f6045cd97744450b73493fa76330 url: "https://pub.dev" source: hosted - version: "6.0.36" + version: "6.1.0" url_launcher_ios: dependency: transitive description: name: url_launcher_ios - sha256: "9af7ea73259886b92199f9e42c116072f05ff9bea2dcb339ab935dfc957392c2" + sha256: "7c65021d5dee51813d652357bc65b8dd4a6177082a9966bc8ba6ee477baa795f" url: "https://pub.dev" source: hosted - version: "6.1.4" + version: "6.1.5" url_launcher_linux: dependency: transitive description: name: url_launcher_linux - sha256: "207f4ddda99b95b4d4868320a352d374b0b7e05eefad95a4a26f57da413443f5" + sha256: b651aad005e0cb06a01dbd84b428a301916dc75f0e7ea6165f80057fee2d8e8e url: "https://pub.dev" source: hosted - version: "3.0.5" + version: "3.0.6" url_launcher_macos: dependency: transitive description: name: url_launcher_macos - sha256: "1c4fdc0bfea61a70792ce97157e5cc17260f61abbe4f39354513f39ec6fd73b1" + sha256: b55486791f666e62e0e8ff825e58a023fd6b1f71c49926483f1128d3bbd8fe88 url: "https://pub.dev" source: hosted - version: "3.0.6" + version: "3.0.7" url_launcher_platform_interface: dependency: transitive description: name: url_launcher_platform_interface - sha256: bfdfa402f1f3298637d71ca8ecfe840b4696698213d5346e9d12d4ab647ee2ea + sha256: "95465b39f83bfe95fcb9d174829d6476216f2d548b79c38ab2506e0458787618" url: "https://pub.dev" source: hosted - version: "2.1.3" + version: "2.1.5" url_launcher_web: dependency: transitive description: name: url_launcher_web - sha256: cc26720eefe98c1b71d85f9dc7ef0cada5132617046369d9dc296b3ecaa5cbb4 + sha256: "2942294a500b4fa0b918685aff406773ba0a4cd34b7f42198742a94083020ce5" url: "https://pub.dev" source: hosted - version: "2.0.18" + version: "2.0.20" url_launcher_windows: dependency: transitive description: name: url_launcher_windows - sha256: "7967065dd2b5fccc18c653b97958fdf839c5478c28e767c61ee879f4e7882422" + sha256: "95fef3129dc7cfaba2bc3d5ba2e16063bb561fc6d78e63eee16162bc70029069" url: "https://pub.dev" source: hosted - version: "3.0.7" + version: "3.0.8" vector_graphics: dependency: transitive description: @@ -974,10 +974,10 @@ packages: dependency: transitive description: name: vm_service - sha256: ada49637c27973c183dad90beb6bd781eea4c9f5f955d35da172de0af7bd3440 + sha256: c538be99af830f478718b51630ec1b6bee5e74e52c8a802d328d9e71d35d2583 url: "https://pub.dev" source: hosted - version: "11.8.0" + version: "11.10.0" watcher: dependency: transitive description: @@ -1006,26 +1006,26 @@ packages: dependency: transitive description: name: webkit_inspection_protocol - sha256: "67d3a8b6c79e1987d19d848b0892e582dbb0c66c57cc1fef58a177dd2aa2823d" + sha256: "87d3f2333bb240704cd3f1c6b5b7acd8a10e7f0bc28c28dcf14e782014f4a572" url: "https://pub.dev" source: hosted - version: "1.2.0" + version: "1.2.1" win32: dependency: transitive description: name: win32 - sha256: dfdf0136e0aa7a1b474ea133e67cb0154a0acd2599c4f3ada3b49d38d38793ee + sha256: "9e82a402b7f3d518fb9c02d0e9ae45952df31b9bf34d77baf19da2de03fc2aaa" url: "https://pub.dev" source: hosted - version: "5.0.5" + version: "5.0.7" xdg_directories: dependency: transitive description: name: xdg_directories - sha256: e0b1147eec179d3911f1f19b59206448f78195ca1d20514134e10641b7d7fbff + sha256: "589ada45ba9e39405c198fe34eb0f607cddb2108527e658136120892beac46d2" url: "https://pub.dev" source: hosted - version: "1.0.1" + version: "1.0.3" xml: dependency: transitive description: @@ -1043,5 +1043,5 @@ packages: source: hosted version: "3.1.2" sdks: - dart: ">=3.1.0-185.0.dev <4.0.0" - flutter: ">=3.10.0" + dart: ">=3.1.0 <4.0.0" + flutter: ">=3.13.0" diff --git a/pubspec.yaml b/pubspec.yaml index 8767f33..3139637 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -2,7 +2,7 @@ name: tetra_stats description: Track your and other player stats in TETR.IO publish_to: 'none' -version: 1.1.0+7 +version: 1.2.0+8 environment: sdk: '>=2.19.6 <3.0.0' @@ -27,12 +27,12 @@ dependencies: sqflite_common_ffi_web: '>=0.1.0-dev.1' path_provider: ^2.0.15 path: ^1.8.2 - fl_chart: ^0.62.0 + fl_chart: ^0.63.0 package_info_plus: ^4.0.2 shared_preferences: ^2.1.1 intl: ^0.18.0 syncfusion_flutter_gauges: ^22.1.34 - file_selector: ^0.9.4 + file_selector: ^1.0.1 file_picker: ^5.3.2 slang: ^3.20.0 slang_flutter: ^3.20.0