Compare commits

...

13 Commits

Author SHA1 Message Date
LittleSheep
3c77a4d5be 🔀 Merge pull request #243 from BluewhaleYF/jap
🌐 添加日语本地化
2026-01-24 18:53:25 +08:00
LittleSheep
f9061a3dc6 🔀 Merge pull request #242 from BluewhaleYF/translate
🌐 文言界面翻译改进
2026-01-24 18:52:58 +08:00
Flint Scophire
e12a26d5c0 🌐 添加日语本地化 2026-01-24 13:21:37 +08:00
Flint Scophire
6b31d28cd3 🌐 文言界面翻译改进 2026-01-24 12:36:30 +08:00
bff301fdb3 ⬆️ Upgrade dependecies and flutter 2026-01-21 22:50:48 +08:00
LittleSheep
2049ee4401 🔀 Merge pull request #238 from BluewhaleYF/v3
彻底完成文言界面翻译
2026-01-18 23:53:00 +08:00
18c071826f 💄 Play sfx on confirm dialog as well 2026-01-18 18:17:47 +08:00
5bfc301088 🗑️ Clean unused code 2026-01-18 14:25:11 +08:00
a39853ba5a :drunk: Wrote some useless code 2026-01-18 14:16:29 +08:00
639417e952 :drunk: Werid miniapp runtime 2026-01-18 13:31:45 +08:00
Flint Scophire
9de4def4d4 Add files via upload
彻底完成文言界面翻译
2026-01-18 11:27:44 +08:00
fa0051b606 Sound effects on alert 2026-01-18 01:25:07 +08:00
9d867fd888 🍱 Update audio assets 2026-01-18 01:14:06 +08:00
17 changed files with 2311 additions and 2425 deletions

Binary file not shown.

BIN
assets/audio/alert.wav Normal file

Binary file not shown.

Binary file not shown.

BIN
assets/audio/messages.wav Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -188,7 +188,7 @@ void main() async {
if (!kIsWeb && (Platform.isAndroid || Platform.isIOS)) { if (!kIsWeb && (Platform.isAndroid || Platform.isIOS)) {
FlutterNativeSplash.remove(); FlutterNativeSplash.remove();
talker.info("[SplashScreen] Now hiding the splash screen..."); talker.info("[SplashScreen] Now hiding splash screen...");
} }
runApp( runApp(

View File

@@ -1,11 +1,7 @@
import 'dart:math' as math;
import 'package:flutter/services.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:just_audio/just_audio.dart'; import 'package:just_audio/just_audio.dart';
import 'package:island/pods/config.dart'; import 'package:island/pods/config.dart';
import 'package:audio_session/audio_session.dart'; import 'package:audio_session/audio_session.dart';
import 'package:dart_midi_pro/dart_midi_pro.dart';
final sfxPlayerProvider = Provider<AudioPlayer>((ref) { final sfxPlayerProvider = Provider<AudioPlayer>((ref) {
final player = AudioPlayer(); final player = AudioPlayer();
@@ -35,7 +31,7 @@ final notificationSfxProvider = FutureProvider<void>((ref) async {
final player = ref.watch(sfxPlayerProvider); final player = ref.watch(sfxPlayerProvider);
await player.setVolume(0.75); await player.setVolume(0.75);
await player.setAudioSource( await player.setAudioSource(
AudioSource.asset('assets/audio/notification.mp3'), AudioSource.asset('assets/audio/notification.wav'),
preload: true, preload: true,
); );
}); });
@@ -43,7 +39,7 @@ final notificationSfxProvider = FutureProvider<void>((ref) async {
final messageSfxProvider = FutureProvider<void>((ref) async { final messageSfxProvider = FutureProvider<void>((ref) async {
final player = ref.watch(sfxPlayerProvider); final player = ref.watch(sfxPlayerProvider);
await player.setAudioSource( await player.setAudioSource(
AudioSource.asset('assets/audio/messages.mp3'), AudioSource.asset('assets/audio/messages.wav'),
preload: true, preload: true,
); );
}); });
@@ -67,110 +63,3 @@ void playMessageSfx(WidgetRef ref) {
if (!settings.soundEffects) return; if (!settings.soundEffects) return;
_playSfx('assets/audio/messages.mp3', 0.75); _playSfx('assets/audio/messages.mp3', 0.75);
} }
class MiniSampleSynth {
final String sampleAsset;
final int baseNote; // MIDI note of the sample (usually 72 = C5 for lower pitch playback)
AudioPlayer? currentPlayer;
MiniSampleSynth({required this.sampleAsset, this.baseNote = 72});
Future<void> playMidiAsset(String midiAsset) async {
final data = await rootBundle.load(midiAsset);
final midi = MidiParser().parseMidiFromBuffer(data.buffer.asUint8List());
for (final track in midi.tracks) {
int currentTick = 0;
for (final event in track) {
currentTick += event.deltaTime;
if (event is NoteOnEvent && event.velocity > 0) {
final note = event.noteNumber;
final durationTicks = _estimateDuration(track, event);
final durationMs = _ticksToMs(durationTicks, midi);
_scheduleNote(
note: note,
startMs: _ticksToMs(currentTick, midi),
durationMs: durationMs,
);
}
}
}
}
void _scheduleNote({
required int note,
required int startMs,
required int durationMs,
}) {
Future.delayed(Duration(milliseconds: startMs), () async {
// Stop any currently playing note
if (currentPlayer != null) {
await currentPlayer!.stop();
await currentPlayer!.dispose();
currentPlayer = null;
}
final player = AudioPlayer();
currentPlayer = player;
await player.setAudioSource(AudioSource.asset(sampleAsset));
final speed = _noteToSpeed(note);
await player.setSpeed(speed);
await player.play();
Future.delayed(Duration(milliseconds: durationMs), () async {
if (currentPlayer == player) {
await player.stop();
await player.dispose();
currentPlayer = null;
}
});
});
}
double _noteToSpeed(int note) {
return math.pow(2, (note - baseNote) / 12).toDouble();
}
int _getTempo(MidiFile midi) {
for (var track in midi.tracks) {
for (var event in track) {
if (event is SetTempoEvent) {
return event.microsecondsPerBeat;
}
}
}
return 500000; // default 120 BPM
}
int _ticksToMs(int ticks, MidiFile midi) {
final tempo = _getTempo(midi);
final ticksPerBeat = midi.header.ticksPerBeat ?? 480;
return ((ticks * tempo) / ticksPerBeat / 1000).round();
}
int _estimateDuration(List<MidiEvent> track, NoteOnEvent on) {
int ticks = 0;
bool started = false;
for (final e in track) {
if (e == on) {
started = true;
continue;
}
if (!started) continue;
ticks += e.deltaTime;
if (e is NoteOffEvent && e.noteNumber == on.noteNumber) {
return ticks;
}
}
return 200; // fallback
}
}

View File

@@ -85,7 +85,7 @@ final class AppSettingsNotifierProvider
} }
String _$appSettingsNotifierHash() => String _$appSettingsNotifierHash() =>
r'0a7f75bd95850b0c564b29c57912ec8fcac53f09'; r'fc474771ced89ec8637c0f773a9c6bc392f0df60';
abstract class _$AppSettingsNotifier extends $Notifier<AppSettings> { abstract class _$AppSettingsNotifier extends $Notifier<AppSettings> {
AppSettings build(); AppSettings build();

View File

@@ -261,11 +261,11 @@ class FileListScreen extends HookConsumerWidget {
context: context, context: context,
isScrollControlled: true, isScrollControlled: true,
builder: (context) => SheetScaffold( builder: (context) => SheetScaffold(
titleText: 'Usage Overview',
child: UsageOverviewWidget( child: UsageOverviewWidget(
usage: usage, usage: usage,
quota: quota, quota: quota,
).padding(horizontal: 8, vertical: 16), ).padding(horizontal: 8, vertical: 16),
titleText: 'Usage Overview',
), ),
); );
} }

View File

@@ -7,8 +7,10 @@ import 'package:gap/gap.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:island/main.dart'; import 'package:island/main.dart';
import 'package:island/models/account.dart'; import 'package:island/models/account.dart';
import 'package:island/pods/config.dart';
import 'package:island/pods/notification.dart'; import 'package:island/pods/notification.dart';
import 'package:island/talker.dart'; import 'package:island/talker.dart';
import 'package:just_audio/just_audio.dart';
import 'package:material_symbols_icons/symbols.dart'; import 'package:material_symbols_icons/symbols.dart';
import 'package:styled_widget/styled_widget.dart'; import 'package:styled_widget/styled_widget.dart';
import 'package:top_snackbar_flutter/top_snack_bar.dart'; import 'package:top_snackbar_flutter/top_snack_bar.dart';
@@ -241,7 +243,22 @@ bool closeTopmostOverlayDialog() {
const kDialogMaxWidth = 480.0; const kDialogMaxWidth = 480.0;
Future<void> _playSfx(String assetPath, double volume) async {
final player = AudioPlayer();
await player.setVolume(volume);
await player.setAudioSource(AudioSource.asset(assetPath));
await player.play();
await player.dispose();
}
void showErrorAlert(dynamic err, {IconData? icon}) { void showErrorAlert(dynamic err, {IconData? icon}) {
final context = globalOverlay.currentState!.context;
final ref = ProviderScope.containerOf(context);
final settings = ref.read(appSettingsProvider);
if (settings.soundEffects) {
unawaited(_playSfx('assets/audio/alert.reversed.wav', 0.75));
}
if (err is Error) { if (err is Error) {
talker.error('Something went wrong...', err, err.stackTrace); talker.error('Something went wrong...', err, err.stackTrace);
} }
@@ -292,6 +309,13 @@ void showErrorAlert(dynamic err, {IconData? icon}) {
} }
void showInfoAlert(String message, String title, {IconData? icon}) { void showInfoAlert(String message, String title, {IconData? icon}) {
final context = globalOverlay.currentState!.context;
final ref = ProviderScope.containerOf(context);
final settings = ref.read(appSettingsProvider);
if (settings.soundEffects) {
unawaited(_playSfx('assets/audio/alert.wav', 0.75));
}
showOverlayDialog<void>( showOverlayDialog<void>(
builder: (context, close) => ConstrainedBox( builder: (context, close) => ConstrainedBox(
constraints: const BoxConstraints(maxWidth: kDialogMaxWidth), constraints: const BoxConstraints(maxWidth: kDialogMaxWidth),
@@ -333,6 +357,13 @@ Future<bool> showConfirmAlert(
IconData? icon, IconData? icon,
bool isDanger = false, bool isDanger = false,
}) async { }) async {
final context = globalOverlay.currentState!.context;
final ref = ProviderScope.containerOf(context);
final settings = ref.read(appSettingsProvider);
if (settings.soundEffects) {
unawaited(_playSfx('assets/audio/alert.wav', 0.75));
}
final result = await showOverlayDialog<bool>( final result = await showOverlayDialog<bool>(
builder: (context, close) => ConstrainedBox( builder: (context, close) => ConstrainedBox(
constraints: const BoxConstraints(maxWidth: kDialogMaxWidth), constraints: const BoxConstraints(maxWidth: kDialogMaxWidth),
@@ -422,3 +453,4 @@ Future<void> openExternalLink(Uri url, WidgetRef ref) async {
} }
} }
} }

View File

@@ -3,7 +3,6 @@ import 'package:flutter/services.dart';
import 'package:flutter_cache_manager/flutter_cache_manager.dart'; import 'package:flutter_cache_manager/flutter_cache_manager.dart';
import 'package:gap/gap.dart'; import 'package:gap/gap.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:island/pods/audio.dart';
import 'package:island/pods/message.dart'; import 'package:island/pods/message.dart';
import 'package:island/pods/network.dart'; import 'package:island/pods/network.dart';
import 'package:island/services/update_service.dart'; import 'package:island/services/update_service.dart';
@@ -23,7 +22,7 @@ Future<void> _showSetTokenDialog(BuildContext context, WidgetRef ref) async {
context: context, context: context,
builder: (BuildContext context) { builder: (BuildContext context) {
return AlertDialog( return AlertDialog(
title: const Text('Set Access Token'), title: const Text('Set access token'),
content: TextField( content: TextField(
controller: controller, controller: controller,
decoration: const InputDecoration( decoration: const InputDecoration(
@@ -131,17 +130,26 @@ class DebugSheet extends HookConsumerWidget {
const Divider(height: 8), const Divider(height: 8),
ListTile( ListTile(
minTileHeight: 48, minTileHeight: 48,
leading: const Icon(Symbols.play_arrow), leading: const Icon(Symbols.error),
trailing: const Icon(Symbols.chevron_right), trailing: const Icon(Symbols.chevron_right),
contentPadding: EdgeInsets.symmetric(horizontal: 24), contentPadding: const EdgeInsets.symmetric(horizontal: 24),
title: Text('Play untitled'), title: const Text('Test error alert'),
onTap: () async { onTap: () {
final synth = MiniSampleSynth( showErrorAlert(
sampleAsset: 'assets/audio/messages.mp3', 'This is a test error message for debugging purposes.',
baseNote: 60,
); );
await synth.playMidiAsset( },
'assets/midi/never-gonna-give-you-up.mid', ),
ListTile(
minTileHeight: 48,
leading: const Icon(Symbols.info),
trailing: const Icon(Symbols.chevron_right),
contentPadding: const EdgeInsets.symmetric(horizontal: 24),
title: const Text('Test info alert'),
onTap: () {
showInfoAlert(
'This is a test info message for debugging purposes.',
'Test Alert',
); );
}, },
), ),

View File

@@ -102,16 +102,16 @@ class FileListView extends HookConsumerWidget {
useEffect(() { useEffect(() {
// Sync query, order, and orderDesc filters // Sync query, order, and orderDesc filters
if (mode.value == FileListMode.unindexed) { if (mode.value == FileListMode.unindexed) {
unindexedNotifier.setQuery(this.query.value); unindexedNotifier.setQuery(query.value);
unindexedNotifier.setOrder(order.value); unindexedNotifier.setOrder(order.value);
unindexedNotifier.setOrderDesc(orderDesc.value); unindexedNotifier.setOrderDesc(orderDesc.value);
} else { } else {
cloudNotifier.setQuery(this.query.value); cloudNotifier.setQuery(query.value);
cloudNotifier.setOrder(order.value); cloudNotifier.setOrder(order.value);
cloudNotifier.setOrderDesc(orderDesc.value); cloudNotifier.setOrderDesc(orderDesc.value);
} }
return null; return null;
}, [this.query.value, order.value, orderDesc.value, mode.value]); }, [query.value, order.value, orderDesc.value, mode.value]);
final isRefreshing = ref.watch( final isRefreshing = ref.watch(
mode.value == FileListMode.normal mode.value == FileListMode.normal

View File

@@ -13,10 +13,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: _flutterfire_internals name: _flutterfire_internals
sha256: e4a1b612fd2955908e26116075b3a4baf10c353418ca645b4deae231c82bf144 sha256: cd83f7d6bd4e4c0b0b4fef802e8796784032e1cc23d7b0e982cf5d05d9bbe182
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.3.65" version: "1.3.66"
adaptive_number: adaptive_number:
dependency: transitive dependency: transitive
description: description:
@@ -277,10 +277,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: code_assets name: code_assets
sha256: ae0db647e668cbb295a3527f0938e4039e004c80099dce2f964102373f5ce0b5 sha256: "83ccdaa064c980b5596c35dd64a8d3ecc68620174ab9b90b6343b753aa721687"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.19.10" version: "1.0.0"
code_builder: code_builder:
dependency: transitive dependency: transitive
description: description:
@@ -313,14 +313,6 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.0.1" version: "2.0.1"
console:
dependency: transitive
description:
name: console
sha256: e04e7824384c5b39389acdd6dc7d33f3efe6b232f6f16d7626f194f6a01ad69a
url: "https://pub.dev"
source: hosted
version: "4.1.0"
convert: convert:
dependency: "direct main" dependency: "direct main"
description: description:
@@ -417,14 +409,6 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "3.3.1" version: "3.3.1"
dart_midi_pro:
dependency: "direct main"
description:
name: dart_midi_pro
sha256: "9a0273c92c0336e5694c7318fd936f64f06e938a936dd5fac6563c39954b7f6d"
url: "https://pub.dev"
source: hosted
version: "1.0.4+2"
dart_style: dart_style:
dependency: transitive dependency: transitive
description: description:
@@ -677,34 +661,34 @@ packages:
dependency: "direct main" dependency: "direct main"
description: description:
name: firebase_analytics name: firebase_analytics
sha256: "8ca4832c7a6d145ce987fd07d6dfbb8c91d9058178342f20de6305fb77b1b40d" sha256: "91e2739bad690da2826c0cd5b28328fd15fb87adf54634cded703f34fd797a81"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "12.1.0" version: "12.1.1"
firebase_analytics_platform_interface: firebase_analytics_platform_interface:
dependency: transitive dependency: transitive
description: description:
name: firebase_analytics_platform_interface name: firebase_analytics_platform_interface
sha256: d00234716f415f89eb5c2cefb1238d7fd2f3120275d71414b84ae434dcdb7a19 sha256: "62fd3f27f342c898bd819fb97fa87c0b971e9fbe03357477282c0e14e1a40c3c"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "5.0.5" version: "5.0.6"
firebase_analytics_web: firebase_analytics_web:
dependency: transitive dependency: transitive
description: description:
name: firebase_analytics_web name: firebase_analytics_web
sha256: e42b294e51aedb4bd4b761a886c8d6b473c44b44aa4c0b47cab06b2c66ac3fba sha256: "8fc488bb008439fc3b850cfac892dec1ff4cd438eee44438919a14c5e61b9828"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.6.1+1" version: "0.6.1+2"
firebase_core: firebase_core:
dependency: "direct main" dependency: "direct main"
description: description:
name: firebase_core name: firebase_core
sha256: "29cfa93c771d8105484acac340b5ea0835be371672c91405a300303986f4eba9" sha256: "923085c881663ef685269b013e241b428e1fb03cdd0ebde265d9b40ff18abf80"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "4.3.0" version: "4.4.0"
firebase_core_platform_interface: firebase_core_platform_interface:
dependency: transitive dependency: transitive
description: description:
@@ -717,50 +701,50 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: firebase_core_web name: firebase_core_web
sha256: a631bbfbfa26963d68046aed949df80b228964020e9155b086eff94f462bbf1f sha256: "83e7356c704131ca4d8d8dd57e360d8acecbca38b1a3705c7ae46cc34c708084"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "3.3.1" version: "3.4.0"
firebase_crashlytics: firebase_crashlytics:
dependency: "direct main" dependency: "direct main"
description: description:
name: firebase_crashlytics name: firebase_crashlytics
sha256: "8d52022ee6fdd224e92c042f297d1fd0ec277195c49f39fa61b8cc500a639f00" sha256: a6e6cb8b2ea1214533a54e4c1b11b19c40f6a29333f3ab0854a479fdc3237c5b
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "5.0.6" version: "5.0.7"
firebase_crashlytics_platform_interface: firebase_crashlytics_platform_interface:
dependency: transitive dependency: transitive
description: description:
name: firebase_crashlytics_platform_interface name: firebase_crashlytics_platform_interface
sha256: "97c6a97b35e3d3dafe38fb053a65086a1efb125022d292161405848527cc25a4" sha256: fc6837c4c64c48fa94cab8a872a632b9194fa9208ca76a822f424b3da945584d
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "3.8.16" version: "3.8.17"
firebase_messaging: firebase_messaging:
dependency: "direct main" dependency: "direct main"
description: description:
name: firebase_messaging name: firebase_messaging
sha256: "1ad663fbb6758acec09d7e84a2e6478265f0a517f40ef77c573efd5e0089f400" sha256: "06fad40ea14771e969a8f2bbce1944aa20ee2f4f57f4eca5b3ba346b65f3f644"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "16.1.0" version: "16.1.1"
firebase_messaging_platform_interface: firebase_messaging_platform_interface:
dependency: transitive dependency: transitive
description: description:
name: firebase_messaging_platform_interface name: firebase_messaging_platform_interface
sha256: ea620e841fbcec62a96984295fc628f53ef5a8da4f53238159719ed0af7db834 sha256: "6c49e901c77e6e10e86d98e32056a087eb1ca1b93acdf58524f1961e617657b7"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "4.7.5" version: "4.7.6"
firebase_messaging_web: firebase_messaging_web:
dependency: transitive dependency: transitive
description: description:
name: firebase_messaging_web name: firebase_messaging_web
sha256: "7d0fb6256202515bba8489a3d69c6bc9d52d69a4999bad789053b486c8e7323e" sha256: "2756f8fea583ffb9d294d15ddecb3a9ad429b023b70c9990c151fc92c54a32b3"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "4.1.1" version: "4.1.2"
fixnum: fixnum:
dependency: transitive dependency: transitive
description: description:
@@ -1253,14 +1237,6 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "3.0.1" version: "3.0.1"
get_it:
dependency: transitive
description:
name: get_it
sha256: ae78de7c3f2304b8d81f2bb6e320833e5e81de942188542328f074978cc0efa9
url: "https://pub.dev"
source: hosted
version: "8.3.0"
glob: glob:
dependency: transitive dependency: transitive
description: description:
@@ -1281,10 +1257,10 @@ packages:
dependency: "direct main" dependency: "direct main"
description: description:
name: google_fonts name: google_fonts
sha256: ca1cc501704c47e478f69a667d7f2d882755ddf7baad3f60c3b1256594467022 sha256: "6996212014b996eaa17074e02b1b925b212f5e053832d9048970dc27255a8fb3"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "7.0.2" version: "7.1.0"
graphs: graphs:
dependency: transitive dependency: transitive
description: description:
@@ -1321,10 +1297,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: hooks name: hooks
sha256: "5410b9f4f6c9f01e8ff0eb81c9801ea13a3c3d39f8f0b1613cda08e27eab3c18" sha256: "5d309c86e7ce34cd8e37aa71cb30cb652d3829b900ab145e4d9da564b31d59f7"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.20.5" version: "1.0.0"
hooks_riverpod: hooks_riverpod:
dependency: "direct main" dependency: "direct main"
description: description:
@@ -1433,10 +1409,10 @@ packages:
dependency: "direct main" dependency: "direct main"
description: description:
name: image_picker_android name: image_picker_android
sha256: "5e9bf126c37c117cf8094215373c6d561117a3cfb50ebc5add1a61dc6e224677" sha256: "539e0030d442ce11d168896d979e04e66e28ef819eadc59aeb62b9d374a139d7"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.8.13+10" version: "0.8.13+11"
image_picker_for_web: image_picker_for_web:
dependency: transitive dependency: transitive
description: description:
@@ -1861,14 +1837,6 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "3.0.0" version: "3.0.0"
msix:
dependency: "direct dev"
description:
name: msix
sha256: f88033fcb9e0dd8de5b18897cbebbd28ea30596810f4a7c86b12b0c03ace87e5
url: "https://pub.dev"
source: hosted
version: "3.16.12"
native_exif: native_exif:
dependency: "direct main" dependency: "direct main"
description: description:
@@ -1881,10 +1849,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: native_toolchain_c name: native_toolchain_c
sha256: f8872ea6c7a50ce08db9ae280ca2b8efdd973157ce462826c82f3c3051d154ce sha256: "89e83885ba09da5fdf2cdacc8002a712ca238c28b7f717910b34bcd27b0d03ac"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.17.2" version: "0.17.4"
nested: nested:
dependency: transitive dependency: transitive
description: description:
@@ -1913,10 +1881,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: objective_c name: objective_c
sha256: "55eb67ede1002d9771b3f9264d2c9d30bc364f0267bc1c6cc0883280d5f0c7cb" sha256: "9922a1ad59ac5afb154cc948aa6ded01987a75003651d0a2866afc23f4da624e"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "9.2.2" version: "9.2.3"
octo_image: octo_image:
dependency: transitive dependency: transitive
description: description:
@@ -2735,10 +2703,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: source_gen name: source_gen
sha256: "585bc140f20da42c584ece2df28f4d9ef2566955332b626f655957b3a8c8ad54" sha256: "1d562a3c1f713904ebbed50d2760217fd8a51ca170ac4b05b0db490699dbac17"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "4.1.2" version: "4.2.0"
source_helper: source_helper:
dependency: transitive dependency: transitive
description: description:
@@ -3007,42 +2975,42 @@ packages:
dependency: "direct main" dependency: "direct main"
description: description:
name: talker name: talker
sha256: c300f9ea5f5433b2db03b6ff61224f25e024ad94b0b6ed996f61686118ae68ec sha256: a9a76f677905bc5cf62ace21a6eea49303cf06ac187bcad52b2004f0b9623fd7
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "5.1.11" version: "5.1.12"
talker_dio_logger: talker_dio_logger:
dependency: "direct main" dependency: "direct main"
description: description:
name: talker_dio_logger name: talker_dio_logger
sha256: a55fe723f3d6f34ecc7ec589b6d66dd6cf9465bd70ea2243573926c994b01255 sha256: "51b0ca82c842abb787fd48d409e4e0299dca1cda010c17b42db74c8a81389b59"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "5.1.11" version: "5.1.12"
talker_flutter: talker_flutter:
dependency: "direct main" dependency: "direct main"
description: description:
name: talker_flutter name: talker_flutter
sha256: "5010a5309c8ff2910407634d38415576a52e689bd631378d0882db5d2e129a31" sha256: "93a287fd7f5a898de6b4b02a5def9acd1cda73ff3f2aa9873877a0cefa943281"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "5.1.11" version: "5.1.12"
talker_logger: talker_logger:
dependency: "direct main" dependency: "direct main"
description: description:
name: talker_logger name: talker_logger
sha256: "6ae95df093f1eabd2827b2e2d72c96ca881acb47dd19456beb1b1e589304916e" sha256: da3d91c36bad10838cba5123b6bdf7d4310411f8f7500539ce364deda3550ac6
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "5.1.11" version: "5.1.12"
talker_riverpod_logger: talker_riverpod_logger:
dependency: "direct main" dependency: "direct main"
description: description:
name: talker_riverpod_logger name: talker_riverpod_logger
sha256: "60ffe027b45a7fde3bc77af63e111ae0eae4c77dde1f0700aa564b43866f7036" sha256: dc20d93765a405f6c5f7a00ac4f890843b8996b9921e3f4c5d04654c0234ae12
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "5.1.11" version: "5.1.12"
term_glyph: term_glyph:
dependency: transitive dependency: transitive
description: description:

View File

@@ -19,7 +19,7 @@ publish_to: "none" # Remove this line if you wish to publish to pub.dev
version: 3.5.0+164 version: 3.5.0+164
environment: environment:
sdk: ^3.8.0 sdk: ">3.10.0"
# Dependencies specify other packages that your package needs in order to work. # Dependencies specify other packages that your package needs in order to work.
# To automatically upgrade your package dependencies to the latest versions # To automatically upgrade your package dependencies to the latest versions
@@ -52,7 +52,7 @@ dependencies:
flutter_highlight: ^0.7.0 flutter_highlight: ^0.7.0
uuid: ^4.5.2 uuid: ^4.5.2
url_launcher: ^6.3.2 url_launcher: ^6.3.2
google_fonts: ^7.0.2 google_fonts: ^7.1.0
gap: ^3.0.1 gap: ^3.0.1
cached_network_image: ^3.4.1 cached_network_image: ^3.4.1
web: ^1.1.1 web: ^1.1.1
@@ -73,12 +73,12 @@ dependencies:
file_picker: ^10.3.8 file_picker: ^10.3.8
riverpod_annotation: ^4.0.0 riverpod_annotation: ^4.0.0
image_picker_platform_interface: ^2.11.1 image_picker_platform_interface: ^2.11.1
image_picker_android: ^0.8.13+10 image_picker_android: ^0.8.13+11
super_context_menu: ^0.9.1 super_context_menu: ^0.9.1
modal_bottom_sheet: ^3.0.0 modal_bottom_sheet: ^3.0.0
firebase_messaging: ^16.1.0 firebase_messaging: ^16.1.1
flutter_udid: ^4.1.1 flutter_udid: ^4.1.1
firebase_core: ^4.3.0 firebase_core: ^4.4.0
web_socket_channel: ^3.0.3 web_socket_channel: ^3.0.3
material_symbols_icons: ^4.2892.0 material_symbols_icons: ^4.2892.0
drift: ^2.30.1 drift: ^2.30.1
@@ -131,8 +131,8 @@ dependencies:
flutter_app_update: ^3.2.2 flutter_app_update: ^3.2.2
archive: ^4.0.7 archive: ^4.0.7
process_run: ^1.2.4 process_run: ^1.2.4
firebase_crashlytics: ^5.0.6 firebase_crashlytics: ^5.0.7
firebase_analytics: ^12.1.0 firebase_analytics: ^12.1.1
material_color_utilities: ^0.11.1 material_color_utilities: ^0.11.1
screenshot: ^3.0.0 screenshot: ^3.0.0
flutter_card_swiper: ^7.2.0 flutter_card_swiper: ^7.2.0
@@ -150,11 +150,11 @@ dependencies:
dart_ipc: ^1.0.1 dart_ipc: ^1.0.1
pretty_diff_text: ^2.1.0 pretty_diff_text: ^2.1.0
window_manager: ^0.5.1 window_manager: ^0.5.1
talker: ^5.1.11 talker: ^5.1.12
talker_flutter: ^5.1.11 talker_flutter: ^5.1.12
talker_logger: ^5.1.11 talker_logger: ^5.1.12
talker_dio_logger: ^5.1.11 talker_dio_logger: ^5.1.12
talker_riverpod_logger: ^5.1.11 talker_riverpod_logger: ^5.1.12
syncfusion_flutter_pdfviewer: ^31.1.21 syncfusion_flutter_pdfviewer: ^31.1.21
swipe_to: ^1.0.6 swipe_to: ^1.0.6
dio_smart_retry: ^7.0.1 dio_smart_retry: ^7.0.1
@@ -174,7 +174,6 @@ dependencies:
video_thumbnail: ^0.5.6 video_thumbnail: ^0.5.6
just_audio: ^0.10.5 just_audio: ^0.10.5
audio_session: ^0.2.2 audio_session: ^0.2.2
dart_midi_pro: ^1.0.4+2
dev_dependencies: dev_dependencies:
flutter_test: flutter_test:
@@ -194,7 +193,6 @@ dev_dependencies:
riverpod_lint: ^3.1.0 riverpod_lint: ^3.1.0
drift_dev: ^2.30.1 drift_dev: ^2.30.1
flutter_launcher_icons: ^0.14.4 flutter_launcher_icons: ^0.14.4
msix: ^3.16.12
# For information on the generic Dart part of this file, see the # For information on the generic Dart part of this file, see the
# following page: https://dart.dev/tools/pub/pubspec # following page: https://dart.dev/tools/pub/pubspec
@@ -208,7 +206,6 @@ flutter:
# To add assets to your application, add an assets section, like this: # To add assets to your application, add an assets section, like this:
assets: assets:
- assets/midi/
- assets/i18n/ - assets/i18n/
- assets/images/ - assets/images/
- assets/images/oidc/ - assets/images/oidc/
@@ -267,13 +264,3 @@ flutter_native_splash:
image_dark: "assets/icons/icon-dark.png" image_dark: "assets/icons/icon-dark.png"
color: "#ffffff" color: "#ffffff"
color_dark: "#121212" color_dark: "#121212"
msix_config:
display_name: Solian
publisher_display_name: Solsynth LLC
identity_name: dev.solian.app
msix_version: 3.2.0.0
logo_path: .\assets\icons\icon.png
protocol_activation: solian, https
app_uri_handler_hosts: solian.app
capabilities: internetClientServer, location, microphone, webcam