progress indicator if duration is not known

This commit is contained in:
poka 2023-04-15 23:48:44 +02:00
parent 29491fb800
commit 422aaefbac
22 changed files with 405 additions and 254 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

View File

@ -1,122 +1,122 @@
{ {
"images": [ "images": [
{ {
"size" : "20x20",
"idiom" : "iphone",
"filename": "Icon-App-20x20@2x.png", "filename": "Icon-App-20x20@2x.png",
"scale" : "2x" "idiom": "iphone",
"scale": "2x",
"size": "20x20"
}, },
{ {
"size" : "20x20",
"idiom" : "iphone",
"filename": "Icon-App-20x20@3x.png", "filename": "Icon-App-20x20@3x.png",
"scale" : "3x" "idiom": "iphone",
"scale": "3x",
"size": "20x20"
}, },
{ {
"size" : "29x29",
"idiom" : "iphone",
"filename": "Icon-App-29x29@1x.png", "filename": "Icon-App-29x29@1x.png",
"scale" : "1x" "idiom": "iphone",
"scale": "1x",
"size": "29x29"
}, },
{ {
"size" : "29x29",
"idiom" : "iphone",
"filename": "Icon-App-29x29@2x.png", "filename": "Icon-App-29x29@2x.png",
"scale" : "2x" "idiom": "iphone",
"scale": "2x",
"size": "29x29"
}, },
{ {
"size" : "29x29",
"idiom" : "iphone",
"filename": "Icon-App-29x29@3x.png", "filename": "Icon-App-29x29@3x.png",
"scale" : "3x" "idiom": "iphone",
"scale": "3x",
"size": "29x29"
}, },
{ {
"size" : "40x40",
"idiom" : "iphone",
"filename": "Icon-App-40x40@2x.png", "filename": "Icon-App-40x40@2x.png",
"scale" : "2x" "idiom": "iphone",
"scale": "2x",
"size": "40x40"
}, },
{ {
"size" : "40x40",
"idiom" : "iphone",
"filename": "Icon-App-40x40@3x.png", "filename": "Icon-App-40x40@3x.png",
"scale" : "3x" "idiom": "iphone",
"scale": "3x",
"size": "40x40"
}, },
{ {
"size" : "60x60",
"idiom" : "iphone",
"filename": "Icon-App-60x60@2x.png", "filename": "Icon-App-60x60@2x.png",
"scale" : "2x"
},
{
"size" : "60x60",
"idiom": "iphone", "idiom": "iphone",
"scale": "2x",
"size": "60x60"
},
{
"filename": "Icon-App-60x60@3x.png", "filename": "Icon-App-60x60@3x.png",
"scale" : "3x" "idiom": "iphone",
"scale": "3x",
"size": "60x60"
}, },
{ {
"size" : "20x20",
"idiom" : "ipad",
"filename": "Icon-App-20x20@1x.png", "filename": "Icon-App-20x20@1x.png",
"scale" : "1x" "idiom": "ipad",
"scale": "1x",
"size": "20x20"
}, },
{ {
"size" : "20x20",
"idiom" : "ipad",
"filename": "Icon-App-20x20@2x.png", "filename": "Icon-App-20x20@2x.png",
"scale" : "2x" "idiom": "ipad",
"scale": "2x",
"size": "20x20"
}, },
{ {
"size" : "29x29",
"idiom" : "ipad",
"filename": "Icon-App-29x29@1x.png", "filename": "Icon-App-29x29@1x.png",
"scale" : "1x" "idiom": "ipad",
"scale": "1x",
"size": "29x29"
}, },
{ {
"size" : "29x29",
"idiom" : "ipad",
"filename": "Icon-App-29x29@2x.png", "filename": "Icon-App-29x29@2x.png",
"scale" : "2x" "idiom": "ipad",
"scale": "2x",
"size": "29x29"
}, },
{ {
"size" : "40x40",
"idiom" : "ipad",
"filename": "Icon-App-40x40@1x.png", "filename": "Icon-App-40x40@1x.png",
"scale" : "1x" "idiom": "ipad",
"scale": "1x",
"size": "40x40"
}, },
{ {
"size" : "40x40",
"idiom" : "ipad",
"filename": "Icon-App-40x40@2x.png", "filename": "Icon-App-40x40@2x.png",
"scale" : "2x" "idiom": "ipad",
"scale": "2x",
"size": "40x40"
}, },
{ {
"size" : "76x76",
"idiom" : "ipad",
"filename": "Icon-App-76x76@1x.png", "filename": "Icon-App-76x76@1x.png",
"scale" : "1x" "idiom": "ipad",
"scale": "1x",
"size": "76x76"
}, },
{ {
"size" : "76x76",
"idiom" : "ipad",
"filename": "Icon-App-76x76@2x.png", "filename": "Icon-App-76x76@2x.png",
"scale" : "2x"
},
{
"size" : "83.5x83.5",
"idiom": "ipad", "idiom": "ipad",
"filename" : "Icon-App-83.5x83.5@2x.png", "scale": "2x",
"scale" : "2x" "size": "76x76"
},
{
"filename": "Icon-App-83.5x83.5@2x.png",
"idiom": "ipad",
"scale": "2x",
"size": "83.5x83.5"
}, },
{ {
"size" : "1024x1024",
"idiom" : "ios-marketing",
"filename": "Icon-App-1024x1024@1x.png", "filename": "Icon-App-1024x1024@1x.png",
"scale" : "1x" "idiom": "ios-marketing",
"scale": "1x",
"size": "1024x1024"
} }
], ],
"info": { "info": {
"version" : 1, "author": "icons_launcher",
"author" : "xcode" "version": 1
} }
} }

View File

@ -1,6 +1,10 @@
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:logger/logger.dart';
TextStyle globalTextStyle = TextStyle(color: Colors.grey[350]); TextStyle globalTextStyle = TextStyle(color: Colors.grey[350]);
const proxyHeader = const proxyHeader =
kDebugMode || !kIsWeb ? 'https://' : 'http://127.0.0.1:8080/'; kDebugMode || !kIsWeb ? 'https://' : 'http://127.0.0.1:8080/';
// Logger
final log = Logger();

View File

@ -98,7 +98,7 @@ class HomeProvider with ChangeNotifier {
try { try {
final source = UrlSource( final source = UrlSource(
"https://${invidiousUrl[1]}/latest_version?id=${track.id}&itag=140&local=true&listen=1"); "https://${invidiousUrl[3]}/latest_version?id=${track.id}&itag=140&local=true&listen=1");
print(source.url); print(source.url);
await player.play(source); await player.play(source);
} catch (e) { } catch (e) {

View File

@ -42,13 +42,7 @@ class _HomeScreenState extends State<HomeScreen> {
child: Stack( child: Stack(
children: <Widget>[ children: <Widget>[
Scaffold( Scaffold(
body: RawScrollbar( body: SingleChildScrollView(
thumbColor: Colors.grey[600],
radius: const Radius.circular(20),
thickness: 12,
// thumbVisibility: true,
mainAxisMargin: 70,
child: SingleChildScrollView(
// controller: AdjustableScrollController(40), // controller: AdjustableScrollController(40),
child: Column( child: Column(
children: <Widget>[ children: <Widget>[
@ -81,8 +75,7 @@ class _HomeScreenState extends State<HomeScreen> {
iconSize: 22, iconSize: 22,
onChanged: (String? newPageNumber) { onChanged: (String? newPageNumber) {
setState(() { setState(() {
hp.userPageNbr = hp.userPageNbr = int.parse(newPageNumber!);
int.parse(newPageNumber!);
}); });
}, },
items: hp.pageList), items: hp.pageList),
@ -95,8 +88,7 @@ class _HomeScreenState extends State<HomeScreen> {
AsyncSnapshot<List<Track>> snapshot, AsyncSnapshot<List<Track>> snapshot,
) { ) {
print(snapshot.connectionState); print(snapshot.connectionState);
if (snapshot.connectionState == if (snapshot.connectionState == ConnectionState.waiting) {
ConnectionState.waiting) {
return Stack(children: [ return Stack(children: [
Container( Container(
height: 10000, height: 10000,
@ -143,8 +135,7 @@ class _HomeScreenState extends State<HomeScreen> {
defaultVerticalAlignment: defaultVerticalAlignment:
TableCellVerticalAlignment.middle, TableCellVerticalAlignment.middle,
children: snapshot.data! children: snapshot.data!
.map( .map((item) => _buildTableRow(item, context))
(item) => _buildTableRow(item, context))
.toList() .toList()
..insert( ..insert(
0, 0,
@ -169,13 +160,17 @@ class _HomeScreenState extends State<HomeScreen> {
const SizedBox(height: 70) const SizedBox(height: 70)
], ],
), ),
)), ),
), ),
Consumer<PlayerProvider>(builder: (context, playerProvider, _) { Consumer<PlayerProvider>(builder: (context, playerProvider, _) {
TextEditingController trackTitle = TextEditingController(); TextEditingController trackTitle = TextEditingController();
TextEditingController trackArtiste = TextEditingController(); TextEditingController trackArtiste = TextEditingController();
trackTitle.text = hp.currentTrack?.title ?? ''; trackTitle.text = hp.currentTrack?.title ?? '';
trackArtiste.text = hp.currentTrack?.artiste ?? ''; trackArtiste.text = hp.currentTrack?.artiste ?? '';
// if ((hp.currentTrack?.duration?.inSeconds ?? -1) <= 0) {
// return const Text('attenddssss !!');
// }
return Miniplayer( return Miniplayer(
controller: controller, controller: controller,
backgroundColor: Colors.grey[900]!, backgroundColor: Colors.grey[900]!,
@ -305,12 +300,32 @@ class _HomeScreenState extends State<HomeScreen> {
TextStyle(color: Colors.grey[500], fontSize: 12), TextStyle(color: Colors.grey[500], fontSize: 12),
), ),
const SizedBox(width: 3), const SizedBox(width: 3),
SliderTheme( (hp.currentTrack?.duration?.inSeconds ?? -1) <= 0
? Column(
children: [
const SizedBox(width: 300),
hp.currentTrack?.title == null
? Text(
'Choisissez un titre',
style: TextStyle(
color: Colors.grey[500]),
)
: const SizedBox(
height: 15,
width: 15,
child: CircularProgressIndicator(
strokeWidth: 2,
color: Colors.orange,
),
),
],
)
: SliderTheme(
data: const SliderThemeData( data: const SliderThemeData(
thumbShape: thumbShape: RoundSliderThumbShape(
RoundSliderThumbShape(enabledThumbRadius: 2), enabledThumbRadius: 2),
overlayShape: overlayShape: RoundSliderThumbShape(
RoundSliderThumbShape(enabledThumbRadius: 5), enabledThumbRadius: 5),
trackHeight: 2, trackHeight: 2,
), ),
child: SizedBox( child: SizedBox(

View File

@ -0,0 +1,14 @@
//
// Generated file. Do not edit.
//
import FlutterMacOS
import Foundation
import audioplayers_darwin
import path_provider_foundation
func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
AudioplayersDarwinPlugin.register(with: registry.registrar(forPlugin: "AudioplayersDarwinPlugin"))
PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin"))
}

View File

@ -0,0 +1,11 @@
// This is a generated file; do not edit or check into version control.
FLUTTER_ROOT=C:\Users\poka\dev\flutter
FLUTTER_APPLICATION_PATH=C:\Users\poka\dev\fipy
COCOAPODS_PARALLEL_CODE_SIGN=true
FLUTTER_BUILD_DIR=build
FLUTTER_BUILD_NAME=0.0.2
FLUTTER_BUILD_NUMBER=2
DART_OBFUSCATION=false
TRACK_WIDGET_CREATION=true
TREE_SHAKE_ICONS=false
PACKAGE_CONFIG=.dart_tool/package_config.json

View File

@ -0,0 +1,12 @@
#!/bin/sh
# This is a generated file; do not edit or check into version control.
export "FLUTTER_ROOT=C:\Users\poka\dev\flutter"
export "FLUTTER_APPLICATION_PATH=C:\Users\poka\dev\fipy"
export "COCOAPODS_PARALLEL_CODE_SIGN=true"
export "FLUTTER_BUILD_DIR=build"
export "FLUTTER_BUILD_NAME=0.0.2"
export "FLUTTER_BUILD_NUMBER=2"
export "DART_OBFUSCATION=false"
export "TRACK_WIDGET_CREATION=true"
export "TREE_SHAKE_ICONS=false"
export "PACKAGE_CONFIG=.dart_tool/package_config.json"

View File

@ -0,0 +1,68 @@
{
"images": [
{
"filename": "app_icon_16.png",
"idiom": "mac",
"scale": "1x",
"size": "16x16"
},
{
"filename": "app_icon_32.png",
"idiom": "mac",
"scale": "2x",
"size": "16x16"
},
{
"filename": "app_icon_32.png",
"idiom": "mac",
"scale": "1x",
"size": "32x32"
},
{
"filename": "app_icon_64.png",
"idiom": "mac",
"scale": "2x",
"size": "32x32"
},
{
"filename": "app_icon_128.png",
"idiom": "mac",
"scale": "1x",
"size": "128x128"
},
{
"filename": "app_icon_256.png",
"idiom": "mac",
"scale": "2x",
"size": "128x128"
},
{
"filename": "app_icon_256.png",
"idiom": "mac",
"scale": "1x",
"size": "256x256"
},
{
"filename": "app_icon_512.png",
"idiom": "mac",
"scale": "2x",
"size": "256x256"
},
{
"filename": "app_icon_512.png",
"idiom": "mac",
"scale": "1x",
"size": "512x512"
},
{
"filename": "app_icon_1024.png",
"idiom": "mac",
"scale": "2x",
"size": "512x512"
}
],
"info": {
"author": "icons_launcher",
"version": 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 137 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 396 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 871 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@ -36,13 +36,9 @@ Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{
[Files] [Files]
Source: "C:\Users\poka\dev\fipy\build\windows\runner\Release\{#MyAppExeName}"; DestDir: "{app}"; Flags: ignoreversion Source: "C:\Users\poka\dev\fipy\build\windows\runner\Release\{#MyAppExeName}"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\Users\poka\dev\fipy\build\windows\runner\Release\dart_vlc_plugin.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\Users\poka\dev\fipy\build\windows\runner\Release\flutter_windows.dll"; DestDir: "{app}"; Flags: ignoreversion Source: "C:\Users\poka\dev\fipy\build\windows\runner\Release\flutter_windows.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\Users\poka\dev\fipy\build\windows\runner\Release\libvlc.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\Users\poka\dev\fipy\build\windows\runner\Release\libvlccore.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\Users\poka\dev\fipy\build\windows\runner\Release\audioplayers_windows_plugin.dll"; DestDir: "{app}"; Flags: ignoreversion Source: "C:\Users\poka\dev\fipy\build\windows\runner\Release\audioplayers_windows_plugin.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\Users\poka\dev\fipy\build\windows\runner\Release\data\*"; DestDir: "{app}\data"; Flags: ignoreversion recursesubdirs createallsubdirs Source: "C:\Users\poka\dev\fipy\build\windows\runner\Release\data\*"; DestDir: "{app}\data"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "C:\Users\poka\dev\fipy\build\windows\runner\Release\plugins\*"; DestDir: "{app}\plugins"; Flags: ignoreversion recursesubdirs createallsubdirs
; NOTE: Don't use "Flags: ignoreversion" on any shared system files ; NOTE: Don't use "Flags: ignoreversion" on any shared system files
[Icons] [Icons]

View File

@ -264,6 +264,14 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.0.1" version: "2.0.1"
logger:
dependency: "direct main"
description:
name: logger
sha256: db2ff852ed77090ba9f62d3611e4208a3d11dfa35991a81ae724c113fcb3e3f7
url: "https://pub.dev"
source: hosted
version: "1.3.0"
matcher: matcher:
dependency: transitive dependency: transitive
description: description:

View File

@ -2,7 +2,7 @@ name: fipy
description: Advanced FIP radio track explorer description: Advanced FIP radio track explorer
publish_to: 'none' # Remove this line if you wish to publish to pub.dev publish_to: 'none' # Remove this line if you wish to publish to pub.dev
version: 0.0.2+1 version: 0.0.2+2
environment: environment:
sdk: ">=2.16.2 <3.0.0" sdk: ">=2.16.2 <3.0.0"
@ -27,6 +27,7 @@ dependencies:
universal_io: ^2.0.4 universal_io: ^2.0.4
# ffmpeg_cli: ^0.1.0 # ffmpeg_cli: ^0.1.0
audioplayers: ^4.0.1 audioplayers: ^4.0.1
logger: ^1.3.0
# git: # git:
# url: https://github.com/bluefireteam/audioplayers/tree/main/packages/audioplayers_linux # url: https://github.com/bluefireteam/audioplayers/tree/main/packages/audioplayers_linux
# ref: main # ref: main
@ -36,15 +37,29 @@ dev_dependencies:
flutter_test: flutter_test:
sdk: flutter sdk: flutter
flutter_lints: ^2.0.1 flutter_lints: ^2.0.1
icons_launcher: ^2.0.5 icons_launcher: ^2.0.6
flutter_icons: icons_launcher:
android: true image_path: 'assets/logo_green_dark.jpg'
ios: true platforms:
# macos: true android:
windows: true enable: true
web: true ios:
image_path: "assets/logo_green_dark.jpg" enable: true
windows:
enable: true
linux:
enable: true
macos:
enable: true
# flutter_icons:
# android: true
# ios: true
# # macos: true
# windows: true
# web: true
# image_path: "assets/logo_green_dark.jpg"
flutter: flutter:
uses-material-design: true uses-material-design: true

View File

@ -0,0 +1,8 @@
[Desktop Entry]
Name=Flutter Linux App
Comment=Flutter Linux launcher icon
Exec=app_icon
Icon=app_icon.png
Terminal=false
Type=Application
Categories=Entertainment;

BIN
snap/gui/app_icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 34 KiB