Release... i think?...
This commit is contained in:
parent
248b708276
commit
0e251bd01c
|
@ -38,7 +38,7 @@ jobs:
|
||||||
discussionCategory: autobuilded-releases
|
discussionCategory: autobuilded-releases
|
||||||
artifacts: "build/windows/runner/Release/TetraStats-${{github.ref_name}}-windows.zip"
|
artifacts: "build/windows/runner/Release/TetraStats-${{github.ref_name}}-windows.zip"
|
||||||
tag: Auto-${{ github.run_number }}
|
tag: Auto-${{ github.run_number }}
|
||||||
body: This build was builded with GitHub Action workflow
|
body: Builded with GitHub Action workflow
|
||||||
token: ${{ secrets.TOKEN }}
|
token: ${{ secrets.TOKEN }}
|
||||||
build-and-release-android:
|
build-and-release-android:
|
||||||
name: Build Android App
|
name: Build Android App
|
||||||
|
@ -63,5 +63,5 @@ jobs:
|
||||||
discussionCategory: autobuilded-releases
|
discussionCategory: autobuilded-releases
|
||||||
artifacts: "build/app/outputs/flutter-apk/*"
|
artifacts: "build/app/outputs/flutter-apk/*"
|
||||||
tag: Auto-${{ github.run_number }}
|
tag: Auto-${{ github.run_number }}
|
||||||
body: This build was builded with GitHub Action workflow
|
body: Builded with GitHub Action workflow
|
||||||
token: ${{ secrets.TOKEN }}
|
token: ${{ secrets.TOKEN }}
|
35
README.md
35
README.md
|
@ -2,29 +2,22 @@
|
||||||
|
|
||||||
<center>Track your and other players stats in TETR.IO</center>
|
<center>Track your and other players stats in TETR.IO</center>
|
||||||
|
|
||||||
![Screenshot of the app](https://imgur.com/eAtFeBF.png)
|
![Screenshot of the app](https://imgur.com/CKGYyBg.png)
|
||||||
|
|
||||||
# Development Roadmap
|
You can [try it out right now](https://ts.dan63.by)!!! (web version)
|
||||||
- ~~Ability to fetch player~~
|
|
||||||
- ~~Serialization/Deserialization~~
|
If you want an app, you can find it [here](https://github.com/dan63047/TetraStats/releases)!
|
||||||
- ~~Sqlite Database and service, that can work with it~~ *v0.0.2*
|
# Available functionality
|
||||||
- ~~Ability to track player~~
|
- Advanced stats for players
|
||||||
- ~~Ability to compare 2 players~~ *v0.1.0*
|
- Rank cutoffs and averages
|
||||||
- ~~Stats Calculator~~
|
- Sqlite Database and service, that can work with it
|
||||||
- ~~Ability to compare player with himself in past~~
|
- Comparison to players, rank averages, and player stats from the past
|
||||||
- ~~Tetra League matches history~~
|
- Stats Calculator
|
||||||
- ~~Tetra League historic charts for tracked players~~
|
- Player history in charts
|
||||||
- ~~Better UI with delta and hints for stats~~ *v0.2.0, we are here*
|
|
||||||
- ~~Ability to compare player with APM-PPS-VS stats~~
|
# I forgor💀 to do
|
||||||
- ~~Ability to fetch Tetra League leaderboard~~
|
- UI Animations
|
||||||
- ~~Average stats for ranks~~
|
|
||||||
- ~~Ability to compare player with avgRank~~
|
|
||||||
- UI Animations *lol*
|
|
||||||
- ~~i18n, EN and RU locales~~ *dev build are here*
|
|
||||||
- ~~Talk with osk about CORS and EndContext in TL matches~~ *k*
|
|
||||||
- storeState becomes slow when there a lot of entries, needs to fix
|
|
||||||
- im still not rendering distinguishment
|
- im still not rendering distinguishment
|
||||||
- RELEASE ??? *that will be v1.0.0*
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
@ -1,9 +1,12 @@
|
||||||
/// Generated file. Do not edit.
|
/// Generated file. Do not edit.
|
||||||
///
|
///
|
||||||
/// Locales: 2
|
/// Original: res/i18n
|
||||||
/// Strings: 850 (425 per locale)
|
/// To regenerate, run: `dart run slang`
|
||||||
///
|
///
|
||||||
/// Built on 2023-07-17 at 17:33 UTC
|
/// Locales: 2
|
||||||
|
/// Strings: 856 (428 per locale)
|
||||||
|
///
|
||||||
|
/// Built on 2023-07-20 at 16:26 UTC
|
||||||
|
|
||||||
// coverage:ignore-file
|
// coverage:ignore-file
|
||||||
// ignore_for_file: type=lint
|
// ignore_for_file: type=lint
|
||||||
|
@ -162,6 +165,7 @@ class _StringsEn implements BaseTranslations<AppLocale, _StringsEn> {
|
||||||
String get openSearch => 'Search player';
|
String get openSearch => 'Search player';
|
||||||
String get closeSearch => 'Close search';
|
String get closeSearch => 'Close search';
|
||||||
String get refresh => 'Refresh';
|
String get refresh => 'Refresh';
|
||||||
|
String get fetchAndsaveTLHistory => 'Get player history';
|
||||||
String get showStoredData => 'Show stored data';
|
String get showStoredData => 'Show stored data';
|
||||||
String get statsCalc => 'Stats Calculator';
|
String get statsCalc => 'Stats Calculator';
|
||||||
String get settings => 'Settings';
|
String get settings => 'Settings';
|
||||||
|
@ -215,7 +219,7 @@ class _StringsEn implements BaseTranslations<AppLocale, _StringsEn> {
|
||||||
String get yourIDText => 'Every time when app loads, stats of that player will be fetched. Please prefer ID over nickname because nickname can be changed.';
|
String get yourIDText => 'Every time when app loads, stats of that player will be fetched. Please prefer ID over nickname because nickname can be changed.';
|
||||||
String get language => 'Language';
|
String get language => 'Language';
|
||||||
String get aboutApp => 'About app';
|
String get aboutApp => 'About app';
|
||||||
String aboutAppText({required Object appName, required Object packageName, required Object version, required Object buildNumber}) => '${appName} (${packageName}) Version ${version} Build ${buildNumber}\n\nDeveloped by dan63047\nFormulas provided by kerrmunism';
|
String aboutAppText({required Object appName, required Object packageName, required Object version, required Object buildNumber}) => '${appName} (${packageName}) Version ${version} Build ${buildNumber}\n\nDeveloped by dan63047\nFormulas provided by kerrmunism\nHistory provided by p1nkl0bst3r';
|
||||||
String stateViewTitle({required Object nickname, required Object date}) => '${nickname} account on ${date}';
|
String stateViewTitle({required Object nickname, required Object date}) => '${nickname} account on ${date}';
|
||||||
String statesViewTitle({required Object number, required Object nickname}) => '${number} states of ${nickname} account';
|
String statesViewTitle({required Object number, required Object nickname}) => '${number} states of ${nickname} account';
|
||||||
String statesViewEntry({required Object level, required Object gameTime, required Object friends, required Object rd}) => 'Level ${level}, ${gameTime} of gametime, ${friends} friends, ${rd} RD';
|
String statesViewEntry({required Object level, required Object gameTime, required Object friends, required Object rd}) => 'Level ${level}, ${gameTime} of gametime, ${friends} friends, ${rd} RD';
|
||||||
|
@ -250,6 +254,7 @@ class _StringsEn implements BaseTranslations<AppLocale, _StringsEn> {
|
||||||
String get lbViewOneEntry => 'There is only one player... What?';
|
String get lbViewOneEntry => 'There is only one player... What?';
|
||||||
String lbViewManyEntrys({required Object numberOfPlayers}) => 'There are ${numberOfPlayers} ranked players.';
|
String lbViewManyEntrys({required Object numberOfPlayers}) => 'There are ${numberOfPlayers} ranked players.';
|
||||||
String get p1nkl0bst3rAlert => 'That data was retrived from third party API maintained by p1nkl0bst3r';
|
String get p1nkl0bst3rAlert => 'That data was retrived from third party API maintained by p1nkl0bst3r';
|
||||||
|
String get notForWeb => 'Function is not available for web version';
|
||||||
late final _StringsStatCellNumEn statCellNum = _StringsStatCellNumEn._(_root);
|
late final _StringsStatCellNumEn statCellNum = _StringsStatCellNumEn._(_root);
|
||||||
Map<String, String> get playerRole => {
|
Map<String, String> get playerRole => {
|
||||||
'user': 'User',
|
'user': 'User',
|
||||||
|
@ -542,6 +547,7 @@ class _StringsStatCellNumEn {
|
||||||
String get friends => 'Friends';
|
String get friends => 'Friends';
|
||||||
String get apm => 'Attack\nPer Minute';
|
String get apm => 'Attack\nPer Minute';
|
||||||
String get vs => 'Versus\nScore';
|
String get vs => 'Versus\nScore';
|
||||||
|
String get recordLB => 'Leaderboard placement';
|
||||||
String get lbp => 'Leaderboard\nplacement';
|
String get lbp => 'Leaderboard\nplacement';
|
||||||
String get lbpShort => '№ in LB';
|
String get lbpShort => '№ in LB';
|
||||||
String get lbpc => 'Country LB\nplacement';
|
String get lbpc => 'Country LB\nplacement';
|
||||||
|
@ -660,6 +666,7 @@ class _StringsRu implements _StringsEn {
|
||||||
@override String get openSearch => 'Искать игрока';
|
@override String get openSearch => 'Искать игрока';
|
||||||
@override String get closeSearch => 'Закрыть поиск';
|
@override String get closeSearch => 'Закрыть поиск';
|
||||||
@override String get refresh => 'Обновить';
|
@override String get refresh => 'Обновить';
|
||||||
|
@override String get fetchAndsaveTLHistory => 'Получить историю игрока';
|
||||||
@override String get showStoredData => 'Показать сохранённые данные';
|
@override String get showStoredData => 'Показать сохранённые данные';
|
||||||
@override String get statsCalc => 'Калькулятор статистики';
|
@override String get statsCalc => 'Калькулятор статистики';
|
||||||
@override String get settings => 'Настройки';
|
@override String get settings => 'Настройки';
|
||||||
|
@ -713,7 +720,7 @@ class _StringsRu implements _StringsEn {
|
||||||
@override String get yourIDText => 'Каждый раз, когда приложение запускается, приложение будет получать статистику этого игрока. Пожалуйста, отдайте предпочтение ID, так как никнейм можно изменить.';
|
@override String get yourIDText => 'Каждый раз, когда приложение запускается, приложение будет получать статистику этого игрока. Пожалуйста, отдайте предпочтение ID, так как никнейм можно изменить.';
|
||||||
@override String get language => 'Язык (Language)';
|
@override String get language => 'Язык (Language)';
|
||||||
@override String get aboutApp => 'О приложении';
|
@override String get aboutApp => 'О приложении';
|
||||||
@override String aboutAppText({required Object appName, required Object packageName, required Object version, required Object buildNumber}) => '${appName} (${packageName}) Версия ${version} Сборка ${buildNumber}\n\nРазработал dan63047\nФормулы предоставил kerrmunism';
|
@override String aboutAppText({required Object appName, required Object packageName, required Object version, required Object buildNumber}) => '${appName} (${packageName}) Версия ${version} Сборка ${buildNumber}\n\nРазработал dan63047\nФормулы предоставил kerrmunism\nИсторию предоставляет p1nkl0bst3r';
|
||||||
@override String stateViewTitle({required Object nickname, required Object date}) => 'Аккаунт ${nickname} ${date}';
|
@override String stateViewTitle({required Object nickname, required Object date}) => 'Аккаунт ${nickname} ${date}';
|
||||||
@override String statesViewTitle({required Object number, required Object nickname}) => '${number} состояний аккаунта ${nickname}';
|
@override String statesViewTitle({required Object number, required Object nickname}) => '${number} состояний аккаунта ${nickname}';
|
||||||
@override String statesViewEntry({required Object level, required Object gameTime, required Object friends, required Object rd}) => '${level} уровень, ${gameTime} сыграно, ${friends} друзей, ${rd} RD';
|
@override String statesViewEntry({required Object level, required Object gameTime, required Object friends, required Object rd}) => '${level} уровень, ${gameTime} сыграно, ${friends} друзей, ${rd} RD';
|
||||||
|
@ -748,6 +755,7 @@ class _StringsRu implements _StringsEn {
|
||||||
@override String get lbViewOneEntry => 'В рейтинговой таблице всего один игрок... Чего?';
|
@override String get lbViewOneEntry => 'В рейтинговой таблице всего один игрок... Чего?';
|
||||||
@override String lbViewManyEntrys({required Object numberOfPlayers}) => 'В рейтинговой таблице находится ${numberOfPlayers} игроков.';
|
@override String lbViewManyEntrys({required Object numberOfPlayers}) => 'В рейтинговой таблице находится ${numberOfPlayers} игроков.';
|
||||||
@override String get p1nkl0bst3rAlert => 'Эти данные были получены из стороннего API, который поддерживается p1nkl0bst3r';
|
@override String get p1nkl0bst3rAlert => 'Эти данные были получены из стороннего API, который поддерживается p1nkl0bst3r';
|
||||||
|
@override String get notForWeb => 'Функция недоступна для веб версии';
|
||||||
@override late final _StringsStatCellNumRu statCellNum = _StringsStatCellNumRu._(_root);
|
@override late final _StringsStatCellNumRu statCellNum = _StringsStatCellNumRu._(_root);
|
||||||
@override Map<String, String> get playerRole => {
|
@override Map<String, String> get playerRole => {
|
||||||
'user': 'Пользователь',
|
'user': 'Пользователь',
|
||||||
|
@ -1040,6 +1048,7 @@ class _StringsStatCellNumRu implements _StringsStatCellNumEn {
|
||||||
@override String get friends => 'Друзей';
|
@override String get friends => 'Друзей';
|
||||||
@override String get apm => 'Атака в\nМинуту';
|
@override String get apm => 'Атака в\nМинуту';
|
||||||
@override String get vs => 'Показатель\nVersus';
|
@override String get vs => 'Показатель\nVersus';
|
||||||
|
@override String get recordLB => 'Место в таблице';
|
||||||
@override String get lbp => 'Положение\nв рейтинге';
|
@override String get lbp => 'Положение\nв рейтинге';
|
||||||
@override String get lbpShort => '№ в рейтинге';
|
@override String get lbpShort => '№ в рейтинге';
|
||||||
@override String get lbpc => 'Положение\nв рейтинге страны';
|
@override String get lbpc => 'Положение\nв рейтинге страны';
|
||||||
|
@ -1137,6 +1146,7 @@ extension on _StringsEn {
|
||||||
case 'openSearch': return 'Search player';
|
case 'openSearch': return 'Search player';
|
||||||
case 'closeSearch': return 'Close search';
|
case 'closeSearch': return 'Close search';
|
||||||
case 'refresh': return 'Refresh';
|
case 'refresh': return 'Refresh';
|
||||||
|
case 'fetchAndsaveTLHistory': return 'Get player history';
|
||||||
case 'showStoredData': return 'Show stored data';
|
case 'showStoredData': return 'Show stored data';
|
||||||
case 'statsCalc': return 'Stats Calculator';
|
case 'statsCalc': return 'Stats Calculator';
|
||||||
case 'settings': return 'Settings';
|
case 'settings': return 'Settings';
|
||||||
|
@ -1190,7 +1200,7 @@ extension on _StringsEn {
|
||||||
case 'yourIDText': return 'Every time when app loads, stats of that player will be fetched. Please prefer ID over nickname because nickname can be changed.';
|
case 'yourIDText': return 'Every time when app loads, stats of that player will be fetched. Please prefer ID over nickname because nickname can be changed.';
|
||||||
case 'language': return 'Language';
|
case 'language': return 'Language';
|
||||||
case 'aboutApp': return 'About app';
|
case 'aboutApp': return 'About app';
|
||||||
case 'aboutAppText': return ({required Object appName, required Object packageName, required Object version, required Object buildNumber}) => '${appName} (${packageName}) Version ${version} Build ${buildNumber}\n\nDeveloped by dan63047\nFormulas provided by kerrmunism';
|
case 'aboutAppText': return ({required Object appName, required Object packageName, required Object version, required Object buildNumber}) => '${appName} (${packageName}) Version ${version} Build ${buildNumber}\n\nDeveloped by dan63047\nFormulas provided by kerrmunism\nHistory provided by p1nkl0bst3r';
|
||||||
case 'stateViewTitle': return ({required Object nickname, required Object date}) => '${nickname} account on ${date}';
|
case 'stateViewTitle': return ({required Object nickname, required Object date}) => '${nickname} account on ${date}';
|
||||||
case 'statesViewTitle': return ({required Object number, required Object nickname}) => '${number} states of ${nickname} account';
|
case 'statesViewTitle': return ({required Object number, required Object nickname}) => '${number} states of ${nickname} account';
|
||||||
case 'statesViewEntry': return ({required Object level, required Object gameTime, required Object friends, required Object rd}) => 'Level ${level}, ${gameTime} of gametime, ${friends} friends, ${rd} RD';
|
case 'statesViewEntry': return ({required Object level, required Object gameTime, required Object friends, required Object rd}) => 'Level ${level}, ${gameTime} of gametime, ${friends} friends, ${rd} RD';
|
||||||
|
@ -1225,6 +1235,7 @@ extension on _StringsEn {
|
||||||
case 'lbViewOneEntry': return 'There is only one player... What?';
|
case 'lbViewOneEntry': return 'There is only one player... What?';
|
||||||
case 'lbViewManyEntrys': return ({required Object numberOfPlayers}) => 'There are ${numberOfPlayers} ranked players.';
|
case 'lbViewManyEntrys': return ({required Object numberOfPlayers}) => 'There are ${numberOfPlayers} ranked players.';
|
||||||
case 'p1nkl0bst3rAlert': return 'That data was retrived from third party API maintained by p1nkl0bst3r';
|
case 'p1nkl0bst3rAlert': return 'That data was retrived from third party API maintained by p1nkl0bst3r';
|
||||||
|
case 'notForWeb': return 'Function is not available for web version';
|
||||||
case 'statCellNum.xpLevel': return 'XP Level';
|
case 'statCellNum.xpLevel': return 'XP Level';
|
||||||
case 'statCellNum.xpProgress': return 'Progress to next level';
|
case 'statCellNum.xpProgress': return 'Progress to next level';
|
||||||
case 'statCellNum.xpFrom0To5000': return 'Progress from 0 XP to level 5000';
|
case 'statCellNum.xpFrom0To5000': return 'Progress from 0 XP to level 5000';
|
||||||
|
@ -1234,6 +1245,7 @@ extension on _StringsEn {
|
||||||
case 'statCellNum.friends': return 'Friends';
|
case 'statCellNum.friends': return 'Friends';
|
||||||
case 'statCellNum.apm': return 'Attack\nPer Minute';
|
case 'statCellNum.apm': return 'Attack\nPer Minute';
|
||||||
case 'statCellNum.vs': return 'Versus\nScore';
|
case 'statCellNum.vs': return 'Versus\nScore';
|
||||||
|
case 'statCellNum.recordLB': return 'Leaderboard placement';
|
||||||
case 'statCellNum.lbp': return 'Leaderboard\nplacement';
|
case 'statCellNum.lbp': return 'Leaderboard\nplacement';
|
||||||
case 'statCellNum.lbpShort': return '№ in LB';
|
case 'statCellNum.lbpShort': return '№ in LB';
|
||||||
case 'statCellNum.lbpc': return 'Country LB\nplacement';
|
case 'statCellNum.lbpc': return 'Country LB\nplacement';
|
||||||
|
@ -1570,6 +1582,7 @@ extension on _StringsRu {
|
||||||
case 'openSearch': return 'Искать игрока';
|
case 'openSearch': return 'Искать игрока';
|
||||||
case 'closeSearch': return 'Закрыть поиск';
|
case 'closeSearch': return 'Закрыть поиск';
|
||||||
case 'refresh': return 'Обновить';
|
case 'refresh': return 'Обновить';
|
||||||
|
case 'fetchAndsaveTLHistory': return 'Получить историю игрока';
|
||||||
case 'showStoredData': return 'Показать сохранённые данные';
|
case 'showStoredData': return 'Показать сохранённые данные';
|
||||||
case 'statsCalc': return 'Калькулятор статистики';
|
case 'statsCalc': return 'Калькулятор статистики';
|
||||||
case 'settings': return 'Настройки';
|
case 'settings': return 'Настройки';
|
||||||
|
@ -1623,7 +1636,7 @@ extension on _StringsRu {
|
||||||
case 'yourIDText': return 'Каждый раз, когда приложение запускается, приложение будет получать статистику этого игрока. Пожалуйста, отдайте предпочтение ID, так как никнейм можно изменить.';
|
case 'yourIDText': return 'Каждый раз, когда приложение запускается, приложение будет получать статистику этого игрока. Пожалуйста, отдайте предпочтение ID, так как никнейм можно изменить.';
|
||||||
case 'language': return 'Язык (Language)';
|
case 'language': return 'Язык (Language)';
|
||||||
case 'aboutApp': return 'О приложении';
|
case 'aboutApp': return 'О приложении';
|
||||||
case 'aboutAppText': return ({required Object appName, required Object packageName, required Object version, required Object buildNumber}) => '${appName} (${packageName}) Версия ${version} Сборка ${buildNumber}\n\nРазработал dan63047\nФормулы предоставил kerrmunism';
|
case 'aboutAppText': return ({required Object appName, required Object packageName, required Object version, required Object buildNumber}) => '${appName} (${packageName}) Версия ${version} Сборка ${buildNumber}\n\nРазработал dan63047\nФормулы предоставил kerrmunism\nИсторию предоставляет p1nkl0bst3r';
|
||||||
case 'stateViewTitle': return ({required Object nickname, required Object date}) => 'Аккаунт ${nickname} ${date}';
|
case 'stateViewTitle': return ({required Object nickname, required Object date}) => 'Аккаунт ${nickname} ${date}';
|
||||||
case 'statesViewTitle': return ({required Object number, required Object nickname}) => '${number} состояний аккаунта ${nickname}';
|
case 'statesViewTitle': return ({required Object number, required Object nickname}) => '${number} состояний аккаунта ${nickname}';
|
||||||
case 'statesViewEntry': return ({required Object level, required Object gameTime, required Object friends, required Object rd}) => '${level} уровень, ${gameTime} сыграно, ${friends} друзей, ${rd} RD';
|
case 'statesViewEntry': return ({required Object level, required Object gameTime, required Object friends, required Object rd}) => '${level} уровень, ${gameTime} сыграно, ${friends} друзей, ${rd} RD';
|
||||||
|
@ -1658,6 +1671,7 @@ extension on _StringsRu {
|
||||||
case 'lbViewOneEntry': return 'В рейтинговой таблице всего один игрок... Чего?';
|
case 'lbViewOneEntry': return 'В рейтинговой таблице всего один игрок... Чего?';
|
||||||
case 'lbViewManyEntrys': return ({required Object numberOfPlayers}) => 'В рейтинговой таблице находится ${numberOfPlayers} игроков.';
|
case 'lbViewManyEntrys': return ({required Object numberOfPlayers}) => 'В рейтинговой таблице находится ${numberOfPlayers} игроков.';
|
||||||
case 'p1nkl0bst3rAlert': return 'Эти данные были получены из стороннего API, который поддерживается p1nkl0bst3r';
|
case 'p1nkl0bst3rAlert': return 'Эти данные были получены из стороннего API, который поддерживается p1nkl0bst3r';
|
||||||
|
case 'notForWeb': return 'Функция недоступна для веб версии';
|
||||||
case 'statCellNum.xpLevel': return 'Уровень\nопыта';
|
case 'statCellNum.xpLevel': return 'Уровень\nопыта';
|
||||||
case 'statCellNum.xpProgress': return 'Прогресс до следующего уровня';
|
case 'statCellNum.xpProgress': return 'Прогресс до следующего уровня';
|
||||||
case 'statCellNum.xpFrom0To5000': return 'Прогресс от 0 XP до 5000 уровня';
|
case 'statCellNum.xpFrom0To5000': return 'Прогресс от 0 XP до 5000 уровня';
|
||||||
|
@ -1667,6 +1681,7 @@ extension on _StringsRu {
|
||||||
case 'statCellNum.friends': return 'Друзей';
|
case 'statCellNum.friends': return 'Друзей';
|
||||||
case 'statCellNum.apm': return 'Атака в\nМинуту';
|
case 'statCellNum.apm': return 'Атака в\nМинуту';
|
||||||
case 'statCellNum.vs': return 'Показатель\nVersus';
|
case 'statCellNum.vs': return 'Показатель\nVersus';
|
||||||
|
case 'statCellNum.recordLB': return 'Место в таблице';
|
||||||
case 'statCellNum.lbp': return 'Положение\nв рейтинге';
|
case 'statCellNum.lbp': return 'Положение\nв рейтинге';
|
||||||
case 'statCellNum.lbpShort': return '№ в рейтинге';
|
case 'statCellNum.lbpShort': return '№ в рейтинге';
|
||||||
case 'statCellNum.lbpc': return 'Положение\nв рейтинге страны';
|
case 'statCellNum.lbpc': return 'Положение\nв рейтинге страны';
|
||||||
|
|
|
@ -1,7 +1,10 @@
|
||||||
import 'dart:io';
|
import 'dart:io';
|
||||||
|
import 'package:flutter/foundation.dart';
|
||||||
|
import 'package:flutter/gestures.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:shared_preferences/shared_preferences.dart';
|
import 'package:shared_preferences/shared_preferences.dart';
|
||||||
import 'package:sqflite_common_ffi/sqflite_ffi.dart';
|
import 'package:sqflite_common_ffi/sqflite_ffi.dart';
|
||||||
|
import 'package:sqflite_common_ffi_web/sqflite_ffi_web.dart';
|
||||||
import 'package:tetra_stats/gen/strings.g.dart';
|
import 'package:tetra_stats/gen/strings.g.dart';
|
||||||
import 'package:flutter_localizations/flutter_localizations.dart';
|
import 'package:flutter_localizations/flutter_localizations.dart';
|
||||||
import 'package:tetra_stats/views/main_view.dart';
|
import 'package:tetra_stats/views/main_view.dart';
|
||||||
|
@ -10,7 +13,10 @@ import 'package:tetra_stats/views/tracked_players_view.dart';
|
||||||
import 'package:tetra_stats/views/calc_view.dart';
|
import 'package:tetra_stats/views/calc_view.dart';
|
||||||
|
|
||||||
void main() async {
|
void main() async {
|
||||||
if (Platform.isWindows || Platform.isLinux || Platform.isMacOS) {
|
if (kIsWeb) {
|
||||||
|
sqfliteFfiInit();
|
||||||
|
databaseFactory = databaseFactoryFfiWeb;
|
||||||
|
} else if (Platform.isWindows || Platform.isLinux || Platform.isMacOS) {
|
||||||
sqfliteFfiInit();
|
sqfliteFfiInit();
|
||||||
databaseFactory = databaseFactoryFfi;
|
databaseFactory = databaseFactoryFfi;
|
||||||
}
|
}
|
||||||
|
@ -33,7 +39,11 @@ class MyApp extends StatelessWidget {
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return MaterialApp(
|
return MaterialApp(
|
||||||
|
title: "Tetra Stats",
|
||||||
home: const MainView(),
|
home: const MainView(),
|
||||||
|
scrollBehavior: MaterialScrollBehavior().copyWith(
|
||||||
|
dragDevices: {PointerDeviceKind.mouse, PointerDeviceKind.touch, PointerDeviceKind.stylus, PointerDeviceKind.unknown},
|
||||||
|
),
|
||||||
locale: TranslationProvider.of(context).flutterLocale,
|
locale: TranslationProvider.of(context).flutterLocale,
|
||||||
supportedLocales: AppLocaleUtils.supportedLocales,
|
supportedLocales: AppLocaleUtils.supportedLocales,
|
||||||
localizationsDelegates: GlobalMaterialLocalizations.delegates,
|
localizationsDelegates: GlobalMaterialLocalizations.delegates,
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
|
import 'package:flutter/foundation.dart';
|
||||||
import 'package:sqflite/sqflite.dart';
|
import 'package:sqflite/sqflite.dart';
|
||||||
import 'package:path_provider/path_provider.dart' show MissingPlatformDirectoryException, getApplicationDocumentsDirectory;
|
import 'package:path_provider/path_provider.dart' show MissingPlatformDirectoryException, getApplicationDocumentsDirectory;
|
||||||
import 'package:tetra_stats/services/crud_exceptions.dart';
|
import 'package:tetra_stats/services/crud_exceptions.dart';
|
||||||
|
@ -14,8 +15,13 @@ class DB {
|
||||||
throw DatabaseAlreadyOpen();
|
throw DatabaseAlreadyOpen();
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
final docsPath = await getApplicationDocumentsDirectory();
|
String dbPath;
|
||||||
final dbPath = join(docsPath.path, dbName);
|
if (kIsWeb) {
|
||||||
|
dbPath = dbName;
|
||||||
|
} else {
|
||||||
|
final docsPath = await getApplicationDocumentsDirectory();
|
||||||
|
dbPath = join(docsPath.path, dbName);
|
||||||
|
}
|
||||||
final db = await openDatabase(dbPath);
|
final db = await openDatabase(dbPath);
|
||||||
_db = db;
|
_db = db;
|
||||||
await db.execute(createTetrioUsersTable);
|
await db.execute(createTetrioUsersTable);
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
import 'dart:developer' as developer;
|
import 'dart:developer' as developer;
|
||||||
|
import 'package:flutter/foundation.dart';
|
||||||
import 'package:http/http.dart' as http;
|
import 'package:http/http.dart' as http;
|
||||||
import 'package:tetra_stats/services/crud_exceptions.dart';
|
import 'package:tetra_stats/services/crud_exceptions.dart';
|
||||||
import 'package:tetra_stats/services/sqlite_db_controller.dart';
|
import 'package:tetra_stats/services/sqlite_db_controller.dart';
|
||||||
|
@ -97,7 +98,12 @@ class TetrioService extends DB {
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<List<TetrioPlayer>> fetchAndsaveTLHistory(String id) async {
|
Future<List<TetrioPlayer>> fetchAndsaveTLHistory(String id) async {
|
||||||
var url = Uri.https('api.p1nkl0bst3r.xyz', 'tlhist/$id');
|
Uri url;
|
||||||
|
if (kIsWeb) {
|
||||||
|
url = Uri.https('ts.dan63.by', 'oskware_bridge.php', {"endpoint": "TLHistory", "user": id});
|
||||||
|
} else {
|
||||||
|
url = Uri.https('api.p1nkl0bst3r.xyz', 'tlhist/$id');
|
||||||
|
}
|
||||||
final response = await http.get(url);
|
final response = await http.get(url);
|
||||||
if (response.statusCode == 200) {
|
if (response.statusCode == 200) {
|
||||||
List<List<dynamic>> csv = const CsvToListConverter().convert(response.body)..removeAt(0);
|
List<List<dynamic>> csv = const CsvToListConverter().convert(response.body)..removeAt(0);
|
||||||
|
@ -162,8 +168,12 @@ class TetrioService extends DB {
|
||||||
}catch(e){
|
}catch(e){
|
||||||
developer.log("fetchTLLeaderboard: Trying to retrieve leaderboard", name: "services/tetrio_crud");
|
developer.log("fetchTLLeaderboard: Trying to retrieve leaderboard", name: "services/tetrio_crud");
|
||||||
}
|
}
|
||||||
|
Uri url;
|
||||||
var url = Uri.https('ch.tetr.io', 'api/users/lists/league/all');
|
if (kIsWeb) {
|
||||||
|
url = Uri.https('ts.dan63.by', 'oskware_bridge.php', {"endpoint": "TLLeaderboard"});
|
||||||
|
} else {
|
||||||
|
url = Uri.https('ch.tetr.io', 'api/users/lists/league/all');
|
||||||
|
}
|
||||||
final response = await http.get(url);
|
final response = await http.get(url);
|
||||||
if (response.statusCode == 200) {
|
if (response.statusCode == 200) {
|
||||||
var rawJson = jsonDecode(response.body);
|
var rawJson = jsonDecode(response.body);
|
||||||
|
@ -196,7 +206,12 @@ class TetrioService extends DB {
|
||||||
developer.log("getTLStream: Trying to retrieve stream $userID", name: "services/tetrio_crud");
|
developer.log("getTLStream: Trying to retrieve stream $userID", name: "services/tetrio_crud");
|
||||||
}
|
}
|
||||||
|
|
||||||
var url = Uri.https('ch.tetr.io', 'api/streams/league_userrecent_${userID.toLowerCase().trim()}');
|
Uri url;
|
||||||
|
if (kIsWeb) {
|
||||||
|
url = Uri.https('ts.dan63.by', 'oskware_bridge.php', {"endpoint": "tetrioUserTL", "user": userID.toLowerCase().trim()});
|
||||||
|
} else {
|
||||||
|
url = Uri.https('ch.tetr.io', 'api/streams/league_userrecent_${userID.toLowerCase().trim()}');
|
||||||
|
}
|
||||||
final response = await http.get(url);
|
final response = await http.get(url);
|
||||||
|
|
||||||
if (response.statusCode == 200) {
|
if (response.statusCode == 200) {
|
||||||
|
@ -251,7 +266,12 @@ class TetrioService extends DB {
|
||||||
developer.log("fetchRecords: Trying to retrieve $userID records", name: "services/tetrio_crud");
|
developer.log("fetchRecords: Trying to retrieve $userID records", name: "services/tetrio_crud");
|
||||||
}
|
}
|
||||||
|
|
||||||
var url = Uri.https('ch.tetr.io', 'api/users/${userID.toLowerCase().trim()}/records');
|
Uri url;
|
||||||
|
if (kIsWeb) {
|
||||||
|
url = Uri.https('ts.dan63.by', 'oskware_bridge.php', {"endpoint": "tetrioUserRecords", "user": userID.toLowerCase().trim()});
|
||||||
|
} else {
|
||||||
|
url = Uri.https('ch.tetr.io', 'api/users/${userID.toLowerCase().trim()}/records');
|
||||||
|
}
|
||||||
final response = await http.get(url);
|
final response = await http.get(url);
|
||||||
|
|
||||||
if (response.statusCode == 200) {
|
if (response.statusCode == 200) {
|
||||||
|
@ -406,7 +426,12 @@ class TetrioService extends DB {
|
||||||
developer.log("fetchPlayer: Trying to retrieve $user", name: "services/tetrio_crud");
|
developer.log("fetchPlayer: Trying to retrieve $user", name: "services/tetrio_crud");
|
||||||
}
|
}
|
||||||
|
|
||||||
var url = Uri.https('ch.tetr.io', 'api/users/${user.toLowerCase().trim()}');
|
Uri url;
|
||||||
|
if (kIsWeb) {
|
||||||
|
url = Uri.https('ts.dan63.by', 'oskware_bridge.php', {"endpoint": "tetrioUser", "user": user.toLowerCase().trim()});
|
||||||
|
} else {
|
||||||
|
url = Uri.https('ch.tetr.io', 'api/users/${user.toLowerCase().trim()}');
|
||||||
|
}
|
||||||
final response = await http.get(url);
|
final response = await http.get(url);
|
||||||
|
|
||||||
if (response.statusCode == 200) {
|
if (response.statusCode == 200) {
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
import 'dart:io';
|
import 'dart:io';
|
||||||
|
import 'package:flutter/foundation.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:intl/intl.dart';
|
import 'package:intl/intl.dart';
|
||||||
import 'dart:math';
|
import 'dart:math';
|
||||||
|
@ -15,7 +16,7 @@ import 'package:tetra_stats/widgets/stat_sell_num.dart';
|
||||||
import 'package:tetra_stats/widgets/tl_thingy.dart';
|
import 'package:tetra_stats/widgets/tl_thingy.dart';
|
||||||
import 'package:tetra_stats/widgets/user_thingy.dart';
|
import 'package:tetra_stats/widgets/user_thingy.dart';
|
||||||
|
|
||||||
late Future<List> me;
|
Future<List> me = Future.delayed(const Duration(seconds: 60), () => [null, null, null, null, null, null]);
|
||||||
String _searchFor = "6098518e3d5155e6ec429cdc";
|
String _searchFor = "6098518e3d5155e6ec429cdc";
|
||||||
String _titleNickname = "dan63047";
|
String _titleNickname = "dan63047";
|
||||||
final TetrioService teto = TetrioService();
|
final TetrioService teto = TetrioService();
|
||||||
|
@ -120,8 +121,8 @@ class _MainState extends State<MainView> with SingleTickerProviderStateMixin {
|
||||||
List<TetrioPlayer> states = [];
|
List<TetrioPlayer> states = [];
|
||||||
TetraLeagueAlpha? compareWith;
|
TetraLeagueAlpha? compareWith;
|
||||||
var uniqueTL = <dynamic>{};
|
var uniqueTL = <dynamic>{};
|
||||||
states.addAll(await teto.getPlayer(me.userId));
|
|
||||||
if(fetchHistory) await teto.fetchAndsaveTLHistory(_searchFor);
|
if(fetchHistory) await teto.fetchAndsaveTLHistory(_searchFor);
|
||||||
|
states.addAll(await teto.getPlayer(me.userId));
|
||||||
for (var element in states) {
|
for (var element in states) {
|
||||||
if (uniqueTL.isNotEmpty && uniqueTL.last != element.tlSeason1) uniqueTL.add(element.tlSeason1);
|
if (uniqueTL.isNotEmpty && uniqueTL.last != element.tlSeason1) uniqueTL.add(element.tlSeason1);
|
||||||
if (uniqueTL.isEmpty) uniqueTL.add(element.tlSeason1);
|
if (uniqueTL.isEmpty) uniqueTL.add(element.tlSeason1);
|
||||||
|
@ -222,14 +223,14 @@ class _MainState extends State<MainView> with SingleTickerProviderStateMixin {
|
||||||
),
|
),
|
||||||
PopupMenuButton(
|
PopupMenuButton(
|
||||||
itemBuilder: (BuildContext context) => <PopupMenuEntry>[
|
itemBuilder: (BuildContext context) => <PopupMenuEntry>[
|
||||||
PopupMenuItem(
|
|
||||||
value: "test",
|
|
||||||
child: Text("fetchAndsaveTLHistory"),
|
|
||||||
),
|
|
||||||
PopupMenuItem(
|
PopupMenuItem(
|
||||||
value: "refresh",
|
value: "refresh",
|
||||||
child: Text(t.refresh),
|
child: Text(t.refresh),
|
||||||
),
|
),
|
||||||
|
PopupMenuItem(
|
||||||
|
value: "test",
|
||||||
|
child: Text(t.fetchAndsaveTLHistory),
|
||||||
|
),
|
||||||
PopupMenuItem(
|
PopupMenuItem(
|
||||||
value: "/states",
|
value: "/states",
|
||||||
child: Text(t.showStoredData),
|
child: Text(t.showStoredData),
|
||||||
|
@ -271,7 +272,7 @@ class _MainState extends State<MainView> with SingleTickerProviderStateMixin {
|
||||||
},
|
},
|
||||||
notificationPredicate: (notification) {
|
notificationPredicate: (notification) {
|
||||||
// with NestedScrollView local(depth == 2) OverscrollNotification are not sent
|
// with NestedScrollView local(depth == 2) OverscrollNotification are not sent
|
||||||
if (notification is OverscrollNotification || Platform.isIOS) {
|
if (!kIsWeb && (notification is OverscrollNotification || Platform.isIOS)) {
|
||||||
return notification.depth == 2;
|
return notification.depth == 2;
|
||||||
}
|
}
|
||||||
return notification.depth == 0;
|
return notification.depth == 0;
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
import 'dart:io';
|
import 'dart:io';
|
||||||
import 'package:file_selector/file_selector.dart';
|
import 'package:file_selector/file_selector.dart';
|
||||||
import 'package:file_picker/file_picker.dart';
|
import 'package:file_picker/file_picker.dart';
|
||||||
|
import 'package:flutter/foundation.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:package_info_plus/package_info_plus.dart';
|
import 'package:package_info_plus/package_info_plus.dart';
|
||||||
import 'package:path_provider/path_provider.dart';
|
import 'package:path_provider/path_provider.dart';
|
||||||
|
@ -8,6 +9,7 @@ import 'package:shared_preferences/shared_preferences.dart';
|
||||||
import 'package:tetra_stats/gen/strings.g.dart';
|
import 'package:tetra_stats/gen/strings.g.dart';
|
||||||
import 'package:tetra_stats/services/crud_exceptions.dart';
|
import 'package:tetra_stats/services/crud_exceptions.dart';
|
||||||
import 'package:tetra_stats/services/tetrio_crud.dart';
|
import 'package:tetra_stats/services/tetrio_crud.dart';
|
||||||
|
import 'package:url_launcher/url_launcher.dart';
|
||||||
|
|
||||||
class SettingsView extends StatefulWidget {
|
class SettingsView extends StatefulWidget {
|
||||||
const SettingsView({Key? key}) : super(key: key);
|
const SettingsView({Key? key}) : super(key: key);
|
||||||
|
@ -41,6 +43,15 @@ class SettingsState extends State<SettingsView> {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Future<void> _launchInBrowser(Uri url) async {
|
||||||
|
if (!await launchUrl(
|
||||||
|
url,
|
||||||
|
mode: LaunchMode.externalApplication,
|
||||||
|
)) {
|
||||||
|
throw Exception('Could not launch $url');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Future<void> _getPreferences() async {
|
Future<void> _getPreferences() async {
|
||||||
prefs = await SharedPreferences.getInstance();
|
prefs = await SharedPreferences.getInstance();
|
||||||
_setDefaultNickname(prefs.getString("player"));
|
_setDefaultNickname(prefs.getString("player"));
|
||||||
|
@ -84,29 +95,9 @@ class SettingsState extends State<SettingsView> {
|
||||||
title: Text(t.exportDB),
|
title: Text(t.exportDB),
|
||||||
subtitle: Text(t.exportDBDescription),
|
subtitle: Text(t.exportDBDescription),
|
||||||
onTap: () {
|
onTap: () {
|
||||||
if (Platform.isLinux || Platform.isWindows) {
|
if (kIsWeb){
|
||||||
showDialog(
|
ScaffoldMessenger.of(context).showSnackBar(SnackBar(content: Text(t.notForWeb)));
|
||||||
context: context,
|
} else if (Platform.isAndroid){
|
||||||
builder: (BuildContext context) => AlertDialog(
|
|
||||||
title: Text(t.desktopExportAlertTitle,
|
|
||||||
style: const TextStyle(
|
|
||||||
fontFamily: "Eurostile Round Extended")),
|
|
||||||
content: SingleChildScrollView(
|
|
||||||
child: ListBody(children: [
|
|
||||||
Text(t.desktopExportText)
|
|
||||||
]),
|
|
||||||
),
|
|
||||||
actions: <Widget>[
|
|
||||||
TextButton(
|
|
||||||
child: Text(t.popupActions.ok),
|
|
||||||
onPressed: () {
|
|
||||||
Navigator.of(context).pop();
|
|
||||||
},
|
|
||||||
),
|
|
||||||
],
|
|
||||||
));
|
|
||||||
}
|
|
||||||
if (Platform.isAndroid){
|
|
||||||
var downloadFolder = Directory("/storage/emulated/0/Download");
|
var downloadFolder = Directory("/storage/emulated/0/Download");
|
||||||
File exportedDB = File("${downloadFolder.path}/TetraStats.db");
|
File exportedDB = File("${downloadFolder.path}/TetraStats.db");
|
||||||
getApplicationDocumentsDirectory().then((value) {
|
getApplicationDocumentsDirectory().then((value) {
|
||||||
|
@ -130,6 +121,27 @@ class SettingsState extends State<SettingsView> {
|
||||||
],
|
],
|
||||||
));
|
));
|
||||||
});
|
});
|
||||||
|
} else if (Platform.isLinux || Platform.isWindows) {
|
||||||
|
showDialog(
|
||||||
|
context: context,
|
||||||
|
builder: (BuildContext context) => AlertDialog(
|
||||||
|
title: Text(t.desktopExportAlertTitle,
|
||||||
|
style: const TextStyle(
|
||||||
|
fontFamily: "Eurostile Round Extended")),
|
||||||
|
content: SingleChildScrollView(
|
||||||
|
child: ListBody(children: [
|
||||||
|
Text(t.desktopExportText)
|
||||||
|
]),
|
||||||
|
),
|
||||||
|
actions: <Widget>[
|
||||||
|
TextButton(
|
||||||
|
child: Text(t.popupActions.ok),
|
||||||
|
onPressed: () {
|
||||||
|
Navigator.of(context).pop();
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
));
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
|
@ -137,7 +149,9 @@ class SettingsState extends State<SettingsView> {
|
||||||
title: Text(t.importDB),
|
title: Text(t.importDB),
|
||||||
subtitle: Text(t.importDBDescription),
|
subtitle: Text(t.importDBDescription),
|
||||||
onTap: () {
|
onTap: () {
|
||||||
if(Platform.isAndroid){
|
if (kIsWeb){
|
||||||
|
ScaffoldMessenger.of(context).showSnackBar(SnackBar(content: Text(t.notForWeb)));
|
||||||
|
}else if(Platform.isAndroid){
|
||||||
FilePicker.platform.pickFiles(
|
FilePicker.platform.pickFiles(
|
||||||
type: FileType.any,
|
type: FileType.any,
|
||||||
).then((value){
|
).then((value){
|
||||||
|
@ -233,6 +247,9 @@ class SettingsState extends State<SettingsView> {
|
||||||
),
|
),
|
||||||
const Divider(),
|
const Divider(),
|
||||||
ListTile(
|
ListTile(
|
||||||
|
onTap: (){
|
||||||
|
_launchInBrowser(Uri.https("github.com", "dan63047/TetraStats"));
|
||||||
|
},
|
||||||
title: Text(t.aboutApp),
|
title: Text(t.aboutApp),
|
||||||
subtitle: Text(t.aboutAppText(appName: _packageInfo.appName, packageName: _packageInfo.packageName, version: _packageInfo.version, buildNumber: _packageInfo.buildNumber)),
|
subtitle: Text(t.aboutAppText(appName: _packageInfo.appName, packageName: _packageInfo.packageName, version: _packageInfo.version, buildNumber: _packageInfo.buildNumber)),
|
||||||
),
|
),
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
|
|
||||||
#include <file_selector_linux/file_selector_plugin.h>
|
#include <file_selector_linux/file_selector_plugin.h>
|
||||||
#include <sqlite3_flutter_libs/sqlite3_flutter_libs_plugin.h>
|
#include <sqlite3_flutter_libs/sqlite3_flutter_libs_plugin.h>
|
||||||
|
#include <url_launcher_linux/url_launcher_plugin.h>
|
||||||
|
|
||||||
void fl_register_plugins(FlPluginRegistry* registry) {
|
void fl_register_plugins(FlPluginRegistry* registry) {
|
||||||
g_autoptr(FlPluginRegistrar) file_selector_linux_registrar =
|
g_autoptr(FlPluginRegistrar) file_selector_linux_registrar =
|
||||||
|
@ -16,4 +17,7 @@ void fl_register_plugins(FlPluginRegistry* registry) {
|
||||||
g_autoptr(FlPluginRegistrar) sqlite3_flutter_libs_registrar =
|
g_autoptr(FlPluginRegistrar) sqlite3_flutter_libs_registrar =
|
||||||
fl_plugin_registry_get_registrar_for_plugin(registry, "Sqlite3FlutterLibsPlugin");
|
fl_plugin_registry_get_registrar_for_plugin(registry, "Sqlite3FlutterLibsPlugin");
|
||||||
sqlite3_flutter_libs_plugin_register_with_registrar(sqlite3_flutter_libs_registrar);
|
sqlite3_flutter_libs_plugin_register_with_registrar(sqlite3_flutter_libs_registrar);
|
||||||
|
g_autoptr(FlPluginRegistrar) url_launcher_linux_registrar =
|
||||||
|
fl_plugin_registry_get_registrar_for_plugin(registry, "UrlLauncherPlugin");
|
||||||
|
url_launcher_plugin_register_with_registrar(url_launcher_linux_registrar);
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
list(APPEND FLUTTER_PLUGIN_LIST
|
list(APPEND FLUTTER_PLUGIN_LIST
|
||||||
file_selector_linux
|
file_selector_linux
|
||||||
sqlite3_flutter_libs
|
sqlite3_flutter_libs
|
||||||
|
url_launcher_linux
|
||||||
)
|
)
|
||||||
|
|
||||||
list(APPEND FLUTTER_FFI_PLUGIN_LIST
|
list(APPEND FLUTTER_FFI_PLUGIN_LIST
|
||||||
|
|
|
@ -11,6 +11,7 @@ import path_provider_foundation
|
||||||
import shared_preferences_foundation
|
import shared_preferences_foundation
|
||||||
import sqflite
|
import sqflite
|
||||||
import sqlite3_flutter_libs
|
import sqlite3_flutter_libs
|
||||||
|
import url_launcher_macos
|
||||||
|
|
||||||
func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
|
func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
|
||||||
FileSelectorPlugin.register(with: registry.registrar(forPlugin: "FileSelectorPlugin"))
|
FileSelectorPlugin.register(with: registry.registrar(forPlugin: "FileSelectorPlugin"))
|
||||||
|
@ -19,4 +20,5 @@ func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
|
||||||
SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin"))
|
SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin"))
|
||||||
SqflitePlugin.register(with: registry.registrar(forPlugin: "SqflitePlugin"))
|
SqflitePlugin.register(with: registry.registrar(forPlugin: "SqflitePlugin"))
|
||||||
Sqlite3FlutterLibsPlugin.register(with: registry.registrar(forPlugin: "Sqlite3FlutterLibsPlugin"))
|
Sqlite3FlutterLibsPlugin.register(with: registry.registrar(forPlugin: "Sqlite3FlutterLibsPlugin"))
|
||||||
|
UrlLauncherPlugin.register(with: registry.registrar(forPlugin: "UrlLauncherPlugin"))
|
||||||
}
|
}
|
||||||
|
|
378
pubspec.lock
378
pubspec.lock
|
@ -1,6 +1,22 @@
|
||||||
# Generated by pub
|
# Generated by pub
|
||||||
# See https://dart.dev/tools/pub/glossary#lockfile
|
# See https://dart.dev/tools/pub/glossary#lockfile
|
||||||
packages:
|
packages:
|
||||||
|
_fe_analyzer_shared:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: _fe_analyzer_shared
|
||||||
|
sha256: ae92f5d747aee634b87f89d9946000c2de774be1d6ac3e58268224348cd0101a
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "61.0.0"
|
||||||
|
analyzer:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: analyzer
|
||||||
|
sha256: ea3d8652bda62982addfd92fdc2d0214e5f82e43325104990d4f4c4a2a313562
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "5.13.0"
|
||||||
archive:
|
archive:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -41,6 +57,14 @@ packages:
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.3.0"
|
version: "1.3.0"
|
||||||
|
charcode:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: charcode
|
||||||
|
sha256: fb98c0f6d12c920a02ee2d998da788bca066ca5f148492b7085ee23372b12306
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "1.3.1"
|
||||||
checked_yaml:
|
checked_yaml:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -81,6 +105,14 @@ packages:
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.1.1"
|
version: "3.1.1"
|
||||||
|
coverage:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: coverage
|
||||||
|
sha256: "2fb815080e44a09b85e0f2ca8a820b15053982b2e714b59267719e8a9ff17097"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "1.6.3"
|
||||||
cross_file:
|
cross_file:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -113,6 +145,14 @@ packages:
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.0.5"
|
version: "1.0.5"
|
||||||
|
dev_test:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: dev_test
|
||||||
|
sha256: "0d49b920844062a518edb79fc1dbf9ff6d9bf3c9ab600e3847b7502c27c0caab"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "0.16.1+4"
|
||||||
equatable:
|
equatable:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -157,10 +197,18 @@ packages:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: file_selector
|
name: file_selector
|
||||||
sha256: "2b9acc3587127132da2a8d88d069172c49e32f977211cdf8f61f4b8e68e2a165"
|
sha256: "1d2fde93dddf634a9c3c0faa748169d7ac0d83757135555707e52f02c017ad4f"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.9.4"
|
version: "0.9.5"
|
||||||
|
file_selector_android:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: file_selector_android
|
||||||
|
sha256: "43e5c719f671b9181bef1bf2851135c3ad993a9a6c804a4ccb07579cfee84e34"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "0.5.0+2"
|
||||||
file_selector_ios:
|
file_selector_ios:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -181,10 +229,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: file_selector_macos
|
name: file_selector_macos
|
||||||
sha256: "7a6f1ae6107265664f3f7f89a66074882c4d506aef1441c9af313c1f7e6f41ce"
|
sha256: "4ada532862917bf16e3adb3891fe3a5917a58bae03293e497082203a80909412"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.9.3"
|
version: "0.9.3+1"
|
||||||
file_selector_platform_interface:
|
file_selector_platform_interface:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -197,10 +245,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: file_selector_web
|
name: file_selector_web
|
||||||
sha256: a890ca514f053e976ad7632cd1e665e2c4543d5acd82ec352a8d5709c55d6363
|
sha256: e292740c469df0aeeaba0895bf622bea351a05e87d22864c826bf21c4780e1d7
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.9.1"
|
version: "0.9.2"
|
||||||
file_selector_windows:
|
file_selector_windows:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -234,10 +282,10 @@ packages:
|
||||||
dependency: "direct dev"
|
dependency: "direct dev"
|
||||||
description:
|
description:
|
||||||
name: flutter_lints
|
name: flutter_lints
|
||||||
sha256: aeb0b80a8b3709709c9cc496cdc027c5b3216796bc0af0ce1007eaf24464fd4c
|
sha256: "2118df84ef0c3ca93f96123a616ae8540879991b8b57af2f81b76a7ada49b2a4"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.0.1"
|
version: "2.0.2"
|
||||||
flutter_localizations:
|
flutter_localizations:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description: flutter
|
description: flutter
|
||||||
|
@ -261,14 +309,38 @@ packages:
|
||||||
description: flutter
|
description: flutter
|
||||||
source: sdk
|
source: sdk
|
||||||
version: "0.0.0"
|
version: "0.0.0"
|
||||||
|
frontend_server_client:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: frontend_server_client
|
||||||
|
sha256: "408e3ca148b31c20282ad6f37ebfa6f4bdc8fede5b74bc2f08d9d92b55db3612"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "3.2.0"
|
||||||
|
glob:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: glob
|
||||||
|
sha256: "0e7014b3b7d4dac1ca4d6114f82bf1782ee86745b9b42a92c9289c23d8a0ab63"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "2.1.2"
|
||||||
http:
|
http:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: http
|
name: http
|
||||||
sha256: "4c3f04bfb64d3efd508d06b41b825542f08122d30bda4933fb95c069d22a4fa3"
|
sha256: "759d1a329847dd0f39226c688d3e06a6b8679668e350e2891a6474f8b4bb8525"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.0.0"
|
version: "1.1.0"
|
||||||
|
http_multi_server:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: http_multi_server
|
||||||
|
sha256: "97486f20f9c2f7be8f514851703d0119c3596d14ea63227af6f7a481ef2b2f8b"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "3.2.1"
|
||||||
http_parser:
|
http_parser:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -293,6 +365,14 @@ packages:
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.18.0"
|
version: "0.18.0"
|
||||||
|
io:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: io
|
||||||
|
sha256: "2ec25704aba361659e10e3e5f5d672068d332fc8ac516421d483a11e5cbd061e"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "1.0.4"
|
||||||
js:
|
js:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -325,6 +405,14 @@ packages:
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.1"
|
version: "2.1.1"
|
||||||
|
logging:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: logging
|
||||||
|
sha256: "623a88c9594aa774443aa3eb2d41807a48486b5613e67599fb4c41c0ad47c340"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "1.2.0"
|
||||||
matcher:
|
matcher:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -349,6 +437,30 @@ packages:
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.9.1"
|
version: "1.9.1"
|
||||||
|
mime:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: mime
|
||||||
|
sha256: e4ff8e8564c03f255408decd16e7899da1733852a9110a58fe6d1b817684a63e
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "1.0.4"
|
||||||
|
node_preamble:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: node_preamble
|
||||||
|
sha256: "6e7eac89047ab8a8d26cf16127b5ed26de65209847630400f9aefd7cd5c730db"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "2.0.2"
|
||||||
|
package_config:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: package_config
|
||||||
|
sha256: "1c5b77ccc91e4823a5af61ee74e6b972db1ef98c2ff5a18d3161c982a55448bd"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "2.1.0"
|
||||||
package_info_plus:
|
package_info_plus:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
|
@ -393,10 +505,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: path_provider_foundation
|
name: path_provider_foundation
|
||||||
sha256: "1995d88ec2948dac43edf8fe58eb434d35d22a2940ecee1a9fefcd62beee6eb3"
|
sha256: "916731ccbdce44d545414dd9961f26ba5fbaa74bcbb55237d8e65a623a8c7297"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.2.3"
|
version: "2.2.4"
|
||||||
path_provider_linux:
|
path_provider_linux:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -453,70 +565,118 @@ packages:
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.7.3"
|
version: "3.7.3"
|
||||||
process:
|
pool:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: process
|
name: pool
|
||||||
sha256: "53fd8db9cec1d37b0574e12f07520d582019cb6c44abf5479a01505099a34a09"
|
sha256: "20fe868b6314b322ea036ba325e6fc0711a22948856475e2c2b6306e8ab39c2a"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "4.2.4"
|
version: "1.5.1"
|
||||||
|
process_run:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: process_run
|
||||||
|
sha256: "0071cece7ca0fdf4aaf2cf84ee3082f3043f18afc7fcfd51f53f9424a8072c04"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "0.13.0"
|
||||||
|
pub_semver:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: pub_semver
|
||||||
|
sha256: "40d3ab1bbd474c4c2328c91e3a7df8c6dd629b79ece4c4bd04bee496a224fb0c"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "2.1.4"
|
||||||
shared_preferences:
|
shared_preferences:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: shared_preferences
|
name: shared_preferences
|
||||||
sha256: "396f85b8afc6865182610c0a2fc470853d56499f75f7499e2a73a9f0539d23d0"
|
sha256: "0344316c947ffeb3a529eac929e1978fcd37c26be4e8468628bac399365a3ca1"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.2"
|
version: "2.2.0"
|
||||||
shared_preferences_android:
|
shared_preferences_android:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: shared_preferences_android
|
name: shared_preferences_android
|
||||||
sha256: "6478c6bbbecfe9aced34c483171e90d7c078f5883558b30ec3163cf18402c749"
|
sha256: fe8401ec5b6dcd739a0fe9588802069e608c3fdbfd3c3c93e546cf2f90438076
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.4"
|
version: "2.2.0"
|
||||||
shared_preferences_foundation:
|
shared_preferences_foundation:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: shared_preferences_foundation
|
name: shared_preferences_foundation
|
||||||
sha256: e014107bb79d6d3297196f4f2d0db54b5d1f85b8ea8ff63b8e8b391a02700feb
|
sha256: f39696b83e844923b642ce9dd4bd31736c17e697f6731a5adf445b1274cf3cd4
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.2.2"
|
version: "2.3.2"
|
||||||
shared_preferences_linux:
|
shared_preferences_linux:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: shared_preferences_linux
|
name: shared_preferences_linux
|
||||||
sha256: "9d387433ca65717bbf1be88f4d5bb18f10508917a8fa2fb02e0fd0d7479a9afa"
|
sha256: "71d6806d1449b0a9d4e85e0c7a917771e672a3d5dc61149cc9fac871115018e1"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.2.0"
|
version: "2.3.0"
|
||||||
shared_preferences_platform_interface:
|
shared_preferences_platform_interface:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: shared_preferences_platform_interface
|
name: shared_preferences_platform_interface
|
||||||
sha256: fb5cf25c0235df2d0640ac1b1174f6466bd311f621574997ac59018a6664548d
|
sha256: "23b052f17a25b90ff2b61aad4cc962154da76fb62848a9ce088efe30d7c50ab1"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.2.0"
|
version: "2.3.0"
|
||||||
shared_preferences_web:
|
shared_preferences_web:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: shared_preferences_web
|
name: shared_preferences_web
|
||||||
sha256: "74083203a8eae241e0de4a0d597dbedab3b8fef5563f33cf3c12d7e93c655ca5"
|
sha256: "7347b194fb0bbeb4058e6a4e87ee70350b6b2b90f8ac5f8bd5b3a01548f6d33a"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.0"
|
version: "2.2.0"
|
||||||
shared_preferences_windows:
|
shared_preferences_windows:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: shared_preferences_windows
|
name: shared_preferences_windows
|
||||||
sha256: "5e588e2efef56916a3b229c3bfe81e6a525665a454519ca51dbcc4236a274173"
|
sha256: f95e6a43162bce43c9c3405f3eb6f39e5b5d11f65fab19196cf8225e2777624d
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.2.0"
|
version: "2.3.0"
|
||||||
|
shelf:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: shelf
|
||||||
|
sha256: ad29c505aee705f41a4d8963641f91ac4cee3c8fad5947e033390a7bd8180fa4
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "1.4.1"
|
||||||
|
shelf_packages_handler:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: shelf_packages_handler
|
||||||
|
sha256: "89f967eca29607c933ba9571d838be31d67f53f6e4ee15147d5dc2934fee1b1e"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "3.0.2"
|
||||||
|
shelf_static:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: shelf_static
|
||||||
|
sha256: a41d3f53c4adf0f57480578c1d61d90342cd617de7fc8077b1304643c2d85c1e
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "1.1.2"
|
||||||
|
shelf_web_socket:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: shelf_web_socket
|
||||||
|
sha256: "9ca081be41c60190ebcb4766b2486a7d50261db7bd0f5d9615f2d653637a84c1"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "1.0.4"
|
||||||
sky_engine:
|
sky_engine:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description: flutter
|
description: flutter
|
||||||
|
@ -526,18 +686,34 @@ packages:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: slang
|
name: slang
|
||||||
sha256: a90af3c2a70ae7d302f47717c0578370e5b2e6040c84280c3e11c9221c2a34ae
|
sha256: "68162dc10567b44ef39e8c5ed5a066d7c9b078c8b1b10ee49f713faa43e89a07"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.20.0"
|
version: "3.21.0"
|
||||||
slang_flutter:
|
slang_flutter:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: slang_flutter
|
name: slang_flutter
|
||||||
sha256: f3fb0ffabc5119dbe39fb8ef134d0415a27b1da816f32f1f55c8b67d4e2ac1af
|
sha256: b9c63bf4b0088edde5a09264ac86304f0acec9015aea743f9fa08946d08b832f
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.20.0"
|
version: "3.21.0"
|
||||||
|
source_map_stack_trace:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: source_map_stack_trace
|
||||||
|
sha256: "84cf769ad83aa6bb61e0aa5a18e53aea683395f196a6f39c4c881fb90ed4f7ae"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "2.1.1"
|
||||||
|
source_maps:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: source_maps
|
||||||
|
sha256: "708b3f6b97248e5781f493b765c3337db11c5d2c81c3094f10904bfa8004c703"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "0.10.12"
|
||||||
source_span:
|
source_span:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -570,14 +746,22 @@ packages:
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.2.5"
|
version: "2.2.5"
|
||||||
|
sqflite_common_ffi_web:
|
||||||
|
dependency: "direct main"
|
||||||
|
description:
|
||||||
|
name: sqflite_common_ffi_web
|
||||||
|
sha256: eb8cd50fa1451e8fa5edf5860d68d504572afaf1e68079933f95e95bf273d445
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "0.3.6"
|
||||||
sqlite3:
|
sqlite3:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: sqlite3
|
name: sqlite3
|
||||||
sha256: "281b672749af2edf259fc801f0fcba092257425bcd32a0ce1c8237130bc934c7"
|
sha256: f7511ddd6a2dda8ded9d849f8a925bb6020e0faa59db2443debc18d484e59401
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.11.2"
|
version: "2.0.0"
|
||||||
sqlite3_flutter_libs:
|
sqlite3_flutter_libs:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
|
@ -614,18 +798,18 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: syncfusion_flutter_core
|
name: syncfusion_flutter_core
|
||||||
sha256: "952f5ee970bc3fba2db95a8dac71a295d9a70ad2c0993c7279e3a883c3e1459f"
|
sha256: "83e0937c1d747003e7d2514d093a28101953737a155ad7a1465006a95aa78cd4"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "22.1.34"
|
version: "22.1.39"
|
||||||
syncfusion_flutter_gauges:
|
syncfusion_flutter_gauges:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: syncfusion_flutter_gauges
|
name: syncfusion_flutter_gauges
|
||||||
sha256: "623c61387a425755819a659bb20b64845328bdbb60130c13c37896a7f61db8a7"
|
sha256: eb2b8dbe39b82224d8e6fcce359d5f463e49e74f00854bb0e0db43736b7e504e
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "22.1.34"
|
version: "22.1.39"
|
||||||
synchronized:
|
synchronized:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -642,6 +826,14 @@ packages:
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.2.1"
|
version: "1.2.1"
|
||||||
|
test:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: test
|
||||||
|
sha256: "3dac9aecf2c3991d09b9cdde4f98ded7b30804a88a0d7e4e7e1678e78d6b97f4"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "1.24.1"
|
||||||
test_api:
|
test_api:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -650,6 +842,14 @@ packages:
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.5.1"
|
version: "0.5.1"
|
||||||
|
test_core:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: test_core
|
||||||
|
sha256: "5138dbffb77b2289ecb12b81c11ba46036590b72a64a7a90d6ffb880f1a29e93"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "0.5.1"
|
||||||
typed_data:
|
typed_data:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -658,6 +858,70 @@ packages:
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.3.2"
|
version: "1.3.2"
|
||||||
|
url_launcher:
|
||||||
|
dependency: "direct main"
|
||||||
|
description:
|
||||||
|
name: url_launcher
|
||||||
|
sha256: "781bd58a1eb16069412365c98597726cd8810ae27435f04b3b4d3a470bacd61e"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "6.1.12"
|
||||||
|
url_launcher_android:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: url_launcher_android
|
||||||
|
sha256: "15f5acbf0dce90146a0f5a2c4a002b1814a6303c4c5c075aa2623b2d16156f03"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "6.0.36"
|
||||||
|
url_launcher_ios:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: url_launcher_ios
|
||||||
|
sha256: "9af7ea73259886b92199f9e42c116072f05ff9bea2dcb339ab935dfc957392c2"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "6.1.4"
|
||||||
|
url_launcher_linux:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: url_launcher_linux
|
||||||
|
sha256: "207f4ddda99b95b4d4868320a352d374b0b7e05eefad95a4a26f57da413443f5"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "3.0.5"
|
||||||
|
url_launcher_macos:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: url_launcher_macos
|
||||||
|
sha256: "1c4fdc0bfea61a70792ce97157e5cc17260f61abbe4f39354513f39ec6fd73b1"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "3.0.6"
|
||||||
|
url_launcher_platform_interface:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: url_launcher_platform_interface
|
||||||
|
sha256: bfdfa402f1f3298637d71ca8ecfe840b4696698213d5346e9d12d4ab647ee2ea
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "2.1.3"
|
||||||
|
url_launcher_web:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: url_launcher_web
|
||||||
|
sha256: cc26720eefe98c1b71d85f9dc7ef0cada5132617046369d9dc296b3ecaa5cbb4
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "2.0.18"
|
||||||
|
url_launcher_windows:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: url_launcher_windows
|
||||||
|
sha256: "7967065dd2b5fccc18c653b97958fdf839c5478c28e767c61ee879f4e7882422"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "3.0.7"
|
||||||
vector_math:
|
vector_math:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
|
@ -666,6 +930,14 @@ packages:
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.4"
|
version: "2.1.4"
|
||||||
|
vm_service:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: vm_service
|
||||||
|
sha256: ada49637c27973c183dad90beb6bd781eea4c9f5f955d35da172de0af7bd3440
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "11.8.0"
|
||||||
watcher:
|
watcher:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -674,22 +946,38 @@ packages:
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.1.0"
|
version: "1.1.0"
|
||||||
|
web_socket_channel:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: web_socket_channel
|
||||||
|
sha256: d88238e5eac9a42bb43ca4e721edba3c08c6354d4a53063afaa568516217621b
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "2.4.0"
|
||||||
|
webkit_inspection_protocol:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: webkit_inspection_protocol
|
||||||
|
sha256: "67d3a8b6c79e1987d19d848b0892e582dbb0c66c57cc1fef58a177dd2aa2823d"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "1.2.0"
|
||||||
win32:
|
win32:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: win32
|
name: win32
|
||||||
sha256: "7dacfda1edcca378031db9905ad7d7bd56b29fd1a90b0908b71a52a12c41e36b"
|
sha256: dfdf0136e0aa7a1b474ea133e67cb0154a0acd2599c4f3ada3b49d38d38793ee
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "5.0.3"
|
version: "5.0.5"
|
||||||
xdg_directories:
|
xdg_directories:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: xdg_directories
|
name: xdg_directories
|
||||||
sha256: ee1505df1426458f7f60aac270645098d318a8b4766d85fde75f76f2e21807d1
|
sha256: e0b1147eec179d3911f1f19b59206448f78195ca1d20514134e10641b7d7fbff
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.0.0"
|
version: "1.0.1"
|
||||||
xml:
|
xml:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -708,4 +996,4 @@ packages:
|
||||||
version: "3.1.2"
|
version: "3.1.2"
|
||||||
sdks:
|
sdks:
|
||||||
dart: ">=3.0.0 <4.0.0"
|
dart: ">=3.0.0 <4.0.0"
|
||||||
flutter: ">=3.3.0"
|
flutter: ">=3.10.0"
|
||||||
|
|
|
@ -2,7 +2,7 @@ name: tetra_stats
|
||||||
description: Track your and other player stats in TETR.IO
|
description: Track your and other player stats in TETR.IO
|
||||||
publish_to: 'none'
|
publish_to: 'none'
|
||||||
|
|
||||||
version: 0.2.0+4
|
version: 1.0.0+5
|
||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: '>=2.19.6 <3.0.0'
|
sdk: '>=2.19.6 <3.0.0'
|
||||||
|
@ -24,6 +24,7 @@ dependencies:
|
||||||
sqflite: ^2.2.8+2
|
sqflite: ^2.2.8+2
|
||||||
sqflite_common_ffi: any
|
sqflite_common_ffi: any
|
||||||
sqlite3_flutter_libs: ^0.5.15
|
sqlite3_flutter_libs: ^0.5.15
|
||||||
|
sqflite_common_ffi_web: '>=0.1.0-dev.1'
|
||||||
path_provider: ^2.0.15
|
path_provider: ^2.0.15
|
||||||
path: ^1.8.2
|
path: ^1.8.2
|
||||||
fl_chart: ^0.62.0
|
fl_chart: ^0.62.0
|
||||||
|
@ -36,6 +37,7 @@ dependencies:
|
||||||
slang: ^3.20.0
|
slang: ^3.20.0
|
||||||
slang_flutter: ^3.20.0
|
slang_flutter: ^3.20.0
|
||||||
csv: ^5.0.2
|
csv: ^5.0.2
|
||||||
|
url_launcher: ^6.1.12
|
||||||
|
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
flutter_test:
|
flutter_test:
|
||||||
|
|
|
@ -14,6 +14,7 @@
|
||||||
"openSearch": "Search player",
|
"openSearch": "Search player",
|
||||||
"closeSearch": "Close search",
|
"closeSearch": "Close search",
|
||||||
"refresh": "Refresh",
|
"refresh": "Refresh",
|
||||||
|
"fetchAndsaveTLHistory": "Get player history",
|
||||||
"showStoredData": "Show stored data",
|
"showStoredData": "Show stored data",
|
||||||
"statsCalc": "Stats Calculator",
|
"statsCalc": "Stats Calculator",
|
||||||
"settings": "Settings",
|
"settings": "Settings",
|
||||||
|
@ -67,7 +68,7 @@
|
||||||
"yourIDText": "Every time when app loads, stats of that player will be fetched. Please prefer ID over nickname because nickname can be changed.",
|
"yourIDText": "Every time when app loads, stats of that player will be fetched. Please prefer ID over nickname because nickname can be changed.",
|
||||||
"language": "Language",
|
"language": "Language",
|
||||||
"aboutApp": "About app",
|
"aboutApp": "About app",
|
||||||
"aboutAppText": "${appName} (${packageName}) Version ${version} Build ${buildNumber}\n\nDeveloped by dan63047\nFormulas provided by kerrmunism",
|
"aboutAppText": "${appName} (${packageName}) Version ${version} Build ${buildNumber}\n\nDeveloped by dan63047\nFormulas provided by kerrmunism\nHistory provided by p1nkl0bst3r",
|
||||||
"stateViewTitle": "${nickname} account on ${date}",
|
"stateViewTitle": "${nickname} account on ${date}",
|
||||||
"statesViewTitle": "${number} states of ${nickname} account",
|
"statesViewTitle": "${number} states of ${nickname} account",
|
||||||
"statesViewEntry": "Level ${level}, ${gameTime} of gametime, ${friends} friends, ${rd} RD",
|
"statesViewEntry": "Level ${level}, ${gameTime} of gametime, ${friends} friends, ${rd} RD",
|
||||||
|
@ -102,6 +103,7 @@
|
||||||
"lbViewOneEntry": "There is only one player... What?",
|
"lbViewOneEntry": "There is only one player... What?",
|
||||||
"lbViewManyEntrys": "There are ${numberOfPlayers} ranked players.",
|
"lbViewManyEntrys": "There are ${numberOfPlayers} ranked players.",
|
||||||
"p1nkl0bst3rAlert": "That data was retrived from third party API maintained by p1nkl0bst3r",
|
"p1nkl0bst3rAlert": "That data was retrived from third party API maintained by p1nkl0bst3r",
|
||||||
|
"notForWeb": "Function is not available for web version",
|
||||||
"statCellNum":{
|
"statCellNum":{
|
||||||
"xpLevel": "XP Level",
|
"xpLevel": "XP Level",
|
||||||
"xpProgress": "Progress to next level",
|
"xpProgress": "Progress to next level",
|
||||||
|
@ -112,6 +114,7 @@
|
||||||
"friends": "Friends",
|
"friends": "Friends",
|
||||||
"apm": "Attack\nPer Minute",
|
"apm": "Attack\nPer Minute",
|
||||||
"vs": "Versus\nScore",
|
"vs": "Versus\nScore",
|
||||||
|
"recordLB": "Leaderboard placement",
|
||||||
"lbp": "Leaderboard\nplacement",
|
"lbp": "Leaderboard\nplacement",
|
||||||
"lbpShort": "№ in LB",
|
"lbpShort": "№ in LB",
|
||||||
"lbpc": "Country LB\nplacement",
|
"lbpc": "Country LB\nplacement",
|
||||||
|
|
|
@ -14,6 +14,7 @@
|
||||||
"openSearch": "Искать игрока",
|
"openSearch": "Искать игрока",
|
||||||
"closeSearch": "Закрыть поиск",
|
"closeSearch": "Закрыть поиск",
|
||||||
"refresh": "Обновить",
|
"refresh": "Обновить",
|
||||||
|
"fetchAndsaveTLHistory": "Получить историю игрока",
|
||||||
"showStoredData": "Показать сохранённые данные",
|
"showStoredData": "Показать сохранённые данные",
|
||||||
"statsCalc": "Калькулятор статистики",
|
"statsCalc": "Калькулятор статистики",
|
||||||
"settings": "Настройки",
|
"settings": "Настройки",
|
||||||
|
@ -67,7 +68,7 @@
|
||||||
"yourIDText": "Каждый раз, когда приложение запускается, приложение будет получать статистику этого игрока. Пожалуйста, отдайте предпочтение ID, так как никнейм можно изменить.",
|
"yourIDText": "Каждый раз, когда приложение запускается, приложение будет получать статистику этого игрока. Пожалуйста, отдайте предпочтение ID, так как никнейм можно изменить.",
|
||||||
"language": "Язык (Language)",
|
"language": "Язык (Language)",
|
||||||
"aboutApp": "О приложении",
|
"aboutApp": "О приложении",
|
||||||
"aboutAppText": "${appName} (${packageName}) Версия ${version} Сборка ${buildNumber}\n\nРазработал dan63047\nФормулы предоставил kerrmunism",
|
"aboutAppText": "${appName} (${packageName}) Версия ${version} Сборка ${buildNumber}\n\nРазработал dan63047\nФормулы предоставил kerrmunism\nИсторию предоставляет p1nkl0bst3r",
|
||||||
"stateViewTitle": "Аккаунт ${nickname} ${date}",
|
"stateViewTitle": "Аккаунт ${nickname} ${date}",
|
||||||
"statesViewTitle": "${number} состояний аккаунта ${nickname}",
|
"statesViewTitle": "${number} состояний аккаунта ${nickname}",
|
||||||
"statesViewEntry": "${level} уровень, ${gameTime} сыграно, ${friends} друзей, ${rd} RD",
|
"statesViewEntry": "${level} уровень, ${gameTime} сыграно, ${friends} друзей, ${rd} RD",
|
||||||
|
@ -102,6 +103,7 @@
|
||||||
"lbViewOneEntry": "В рейтинговой таблице всего один игрок... Чего?",
|
"lbViewOneEntry": "В рейтинговой таблице всего один игрок... Чего?",
|
||||||
"lbViewManyEntrys": "В рейтинговой таблице находится ${numberOfPlayers} игроков.",
|
"lbViewManyEntrys": "В рейтинговой таблице находится ${numberOfPlayers} игроков.",
|
||||||
"p1nkl0bst3rAlert": "Эти данные были получены из стороннего API, который поддерживается p1nkl0bst3r",
|
"p1nkl0bst3rAlert": "Эти данные были получены из стороннего API, который поддерживается p1nkl0bst3r",
|
||||||
|
"notForWeb": "Функция недоступна для веб версии",
|
||||||
"statCellNum": {
|
"statCellNum": {
|
||||||
"xpLevel": "Уровень\nопыта",
|
"xpLevel": "Уровень\nопыта",
|
||||||
"xpProgress": "Прогресс до следующего уровня",
|
"xpProgress": "Прогресс до следующего уровня",
|
||||||
|
@ -112,6 +114,7 @@
|
||||||
"friends": "Друзей",
|
"friends": "Друзей",
|
||||||
"apm": "Атака в\nМинуту",
|
"apm": "Атака в\nМинуту",
|
||||||
"vs": "Показатель\nVersus",
|
"vs": "Показатель\nVersus",
|
||||||
|
"recordLB": "Место в таблице",
|
||||||
"lbp": "Положение\nв рейтинге",
|
"lbp": "Положение\nв рейтинге",
|
||||||
"lbpShort": "№ в рейтинге",
|
"lbpShort": "№ в рейтинге",
|
||||||
"lbpc": "Положение\nв рейтинге страны",
|
"lbpc": "Положение\nв рейтинге страны",
|
||||||
|
|
File diff suppressed because one or more lines are too long
Binary file not shown.
|
@ -8,10 +8,13 @@
|
||||||
|
|
||||||
#include <file_selector_windows/file_selector_windows.h>
|
#include <file_selector_windows/file_selector_windows.h>
|
||||||
#include <sqlite3_flutter_libs/sqlite3_flutter_libs_plugin.h>
|
#include <sqlite3_flutter_libs/sqlite3_flutter_libs_plugin.h>
|
||||||
|
#include <url_launcher_windows/url_launcher_windows.h>
|
||||||
|
|
||||||
void RegisterPlugins(flutter::PluginRegistry* registry) {
|
void RegisterPlugins(flutter::PluginRegistry* registry) {
|
||||||
FileSelectorWindowsRegisterWithRegistrar(
|
FileSelectorWindowsRegisterWithRegistrar(
|
||||||
registry->GetRegistrarForPlugin("FileSelectorWindows"));
|
registry->GetRegistrarForPlugin("FileSelectorWindows"));
|
||||||
Sqlite3FlutterLibsPluginRegisterWithRegistrar(
|
Sqlite3FlutterLibsPluginRegisterWithRegistrar(
|
||||||
registry->GetRegistrarForPlugin("Sqlite3FlutterLibsPlugin"));
|
registry->GetRegistrarForPlugin("Sqlite3FlutterLibsPlugin"));
|
||||||
|
UrlLauncherWindowsRegisterWithRegistrar(
|
||||||
|
registry->GetRegistrarForPlugin("UrlLauncherWindows"));
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
list(APPEND FLUTTER_PLUGIN_LIST
|
list(APPEND FLUTTER_PLUGIN_LIST
|
||||||
file_selector_windows
|
file_selector_windows
|
||||||
sqlite3_flutter_libs
|
sqlite3_flutter_libs
|
||||||
|
url_launcher_windows
|
||||||
)
|
)
|
||||||
|
|
||||||
list(APPEND FLUTTER_FFI_PLUGIN_LIST
|
list(APPEND FLUTTER_FFI_PLUGIN_LIST
|
||||||
|
|
Loading…
Reference in New Issue