From 520115c2b0d09ca92faf684677fb789a5afe8854 Mon Sep 17 00:00:00 2001 From: Plus One <2669051290@qq.com> Date: Mon, 11 Nov 2024 23:07:58 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=BA=86=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E6=AD=8C=E5=8D=95=E4=B8=AD=E6=89=80=E6=9C=89=E6=AD=8C?= =?UTF-8?q?=E6=9B=B2=E5=92=8C=E8=8E=B7=E5=8F=96=E6=88=91=E7=9A=84=E4=BD=9C?= =?UTF-8?q?=E5=93=81=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/api/api_songlist.dart | 32 ++++++++++++++++++++++-- lib/models/getAllSongs_bean.dart | 43 ++++++++++++++++++++++++++++++++ lib/models/getMyWorks.dart | 0 3 files changed, 73 insertions(+), 2 deletions(-) create mode 100644 lib/models/getAllSongs_bean.dart create mode 100644 lib/models/getMyWorks.dart diff --git a/lib/api/api_songlist.dart b/lib/api/api_songlist.dart index 387f1b1..78cb797 100644 --- a/lib/api/api_songlist.dart +++ b/lib/api/api_songlist.dart @@ -2,13 +2,41 @@ import 'package:dio/dio.dart'; import 'package:music_player_miao/models/search_bean.dart'; import 'package:music_player_miao/models/songlist_bean.dart'; +import '../models/getAllSongs_bean.dart'; import '../models/universal_bean.dart'; - +import 'package:music_player_miao/models/getMyWorks.dart'; const String _SonglistURL = 'http://flyingpig.fun:10010/songlists'; -///返回歌单 +const String _MyWorksURL = 'http://flyingpig.fun:10010/musics/upload-music'; + + class SonglistApi { final Dio dio = Dio(); + ///获取歌单中所有歌曲 + Future getAllSongs({required int id, required String Authorization}) async { + String urlWithId = 'http://flyingpig.fun:10010/songlist-musics/$id/music-list'; + Response response = await dio.get(urlWithId, + options: Options(headers: { + 'Authorization': Authorization, + 'Content-Type': 'application/json;charset=UTF-8' + })); + print(response.data); + return MyMusicListBean.formMap(response.data); + } + ///获取我的作品 + Future getMyworks({required String Authorization}) async { + Response response = await dio.get(_MyWorksURL, + data: { + 'Authorization': Authorization, + }, + options: Options(headers: { + 'Authorization': Authorization, + 'Content-Type': 'application/json;charset=UTF-8' + })); + print(response.data); + return MyWorks.formMap(response.data); + } + ///返回歌单 Future getSonglist({required String Authorization}) async { Response response = await dio.get(_SonglistURL, data: { diff --git a/lib/models/getAllSongs_bean.dart b/lib/models/getAllSongs_bean.dart new file mode 100644 index 0000000..e4185b8 --- /dev/null +++ b/lib/models/getAllSongs_bean.dart @@ -0,0 +1,43 @@ +class MyMusicListBean { + int? code; + String? msg; + List? data; + + MyMusicListBean.formMap(Map map) { + code = map['code']; + msg = map['msg']; + if (map['data'] is! List) return; + + List dataList = map['data']; + data = dataList.map((item) => DataBean._formMap(item)).toList(); + } +} +class DataBean { + int? songlistId; + List? musicDetail; + + DataBean._formMap(Map map) { + songlistId = map['songlistId']; + List? musicDetailList = map['musicDetail']; + if (musicDetailList == null) return; + + musicDetail = musicDetailList.map((item) => SongDetails._formMap(item)).toList(); + } +} +class SongDetails { + int? id; + String? name; + String? coverPath; + String? musicPath; + String? singerName; + String? uploadUserName; + + SongDetails._formMap(Map map) { + id = map['id']; + name = map['name']; + coverPath = map['coverPath']; + musicPath = map['musicPath']; + singerName = map['singerName']; + uploadUserName = map['uploadUserName']; + } +} \ No newline at end of file diff --git a/lib/models/getMyWorks.dart b/lib/models/getMyWorks.dart new file mode 100644 index 0000000..e69de29 From 8e16ac8ad213e4686977f970f24f97a002fbc438 Mon Sep 17 00:00:00 2001 From: Spark <2666652@gmail.com> Date: Thu, 14 Nov 2024 10:54:31 +0800 Subject: [PATCH 2/2] =?UTF-8?q?feat:=20=E5=AF=B9=E6=8E=A5=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E6=AD=8C=E5=8D=95=E6=AD=8C=E6=9B=B2=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?,=E5=AF=B9=E6=8E=A5=E6=88=91=E7=9A=84=E4=BD=9C=E5=93=81?= =?UTF-8?q?=E6=95=B0=E9=87=8F=E5=92=8C=E6=88=91=E7=9A=84=E4=BD=9C=E5=93=81?= =?UTF-8?q?=E5=86=85=E5=AE=B9=E6=8E=A5=E5=8F=A3,=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E6=AD=8C=E5=8D=95=E4=B8=AD=E6=88=91=E7=9A=84=E6=94=B6=E8=97=8F?= =?UTF-8?q?=E5=92=8C=E6=9C=AC=E5=9C=B0=E4=B8=8B=E8=BD=BD=E4=B8=A4=E8=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- android/build.gradle | 14 + .../gradle/wrapper/gradle-wrapper.properties | 2 +- lib/main.dart | 15 +- lib/models/getAllSongs_bean.dart | 14 +- lib/models/getMusicList_bean.dart | 2 + lib/models/getMyWorks.dart | 34 +++ lib/view/user/my_music_view.dart | 92 ++++++- lib/view/user/my_work_view.dart | 57 +++- lib/view/user/user_view.dart | 117 ++++---- pubspec.lock | 252 ++++++++++-------- pubspec.yaml | 6 +- windows/flutter/CMakeLists.txt | 7 +- 12 files changed, 409 insertions(+), 203 deletions(-) diff --git a/android/build.gradle b/android/build.gradle index f7eb7f6..2886994 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -1,6 +1,13 @@ buildscript { ext.kotlin_version = '1.7.10' repositories { + maven { url 'https://maven.aliyun.com/repository/public/' } + maven { url 'https://maven.aliyun.com/repository/spring/'} + maven { url 'https://maven.aliyun.com/repository/google/'} + maven { url 'https://maven.aliyun.com/repository/gradle-plugin/'} + maven { url 'https://maven.aliyun.com/repository/spring-plugin/'} + maven { url 'https://maven.aliyun.com/repository/grails-core/'} + maven { url 'https://maven.aliyun.com/repository/apache-snapshots/'} google() mavenCentral() } @@ -13,6 +20,13 @@ buildscript { allprojects { repositories { + maven { url 'https://maven.aliyun.com/repository/public/' } + maven { url 'https://maven.aliyun.com/repository/spring/'} + maven { url 'https://maven.aliyun.com/repository/google/'} + maven { url 'https://maven.aliyun.com/repository/gradle-plugin/'} + maven { url 'https://maven.aliyun.com/repository/spring-plugin/'} + maven { url 'https://maven.aliyun.com/repository/grails-core/'} + maven { url 'https://maven.aliyun.com/repository/apache-snapshots/'} google() mavenCentral() } diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties index 3c472b9..b5228c6 100644 --- a/android/gradle/wrapper/gradle-wrapper.properties +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -2,4 +2,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-all.zip +distributionUrl=https\://mirrors.cloud.tencent.com/gradle/gradle-7.5-all.zip diff --git a/lib/main.dart b/lib/main.dart index 95874c1..5140e24 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,9 +1,13 @@ import 'package:flutter/material.dart'; import 'package:music_player_miao/common_widget/app_data.dart'; +import 'package:music_player_miao/view/begin/begin_view.dart'; +import 'package:music_player_miao/view/begin/login_v.dart'; +import 'package:music_player_miao/view/home_view.dart'; import 'package:music_player_miao/view/splash_view.dart'; import 'package:get/get.dart'; import 'dart:io'; import 'package:flutter/services.dart'; +import 'package:music_player_miao/view/user/user_view.dart'; void main(){ WidgetsFlutterBinding.ensureInitialized(); @@ -20,9 +24,14 @@ class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { - return const GetMaterialApp( - debugShowCheckedModeBanner: false, - home: SplashView(), + return GetMaterialApp( + title: 'Flutter Demo', + initialRoute: '/login', // 初始路由 + routes: { + '/': (context) => HomeView(), // 定义首页路由 + '/user': (context) => UserView(), + '/login' : (context) => BeginView()// 定义UserView的路由 + }, ); } } diff --git a/lib/models/getAllSongs_bean.dart b/lib/models/getAllSongs_bean.dart index e4185b8..c947770 100644 --- a/lib/models/getAllSongs_bean.dart +++ b/lib/models/getAllSongs_bean.dart @@ -8,22 +8,22 @@ class MyMusicListBean { msg = map['msg']; if (map['data'] is! List) return; - List dataList = map['data']; - data = dataList.map((item) => DataBean._formMap(item)).toList(); + data = (map['data'] as List) + .map((item) => DataBean._formMap(item)) + .toList(); } } + class DataBean { int? songlistId; - List? musicDetail; + SongDetails? musicDetail; // 修改为单个SongDetails对象 DataBean._formMap(Map map) { songlistId = map['songlistId']; - List? musicDetailList = map['musicDetail']; - if (musicDetailList == null) return; - - musicDetail = musicDetailList.map((item) => SongDetails._formMap(item)).toList(); + musicDetail = SongDetails._formMap(map['musicDetail']); // 直接处理单个对象 } } + class SongDetails { int? id; String? name; diff --git a/lib/models/getMusicList_bean.dart b/lib/models/getMusicList_bean.dart index 2c419ac..1e1a8f2 100644 --- a/lib/models/getMusicList_bean.dart +++ b/lib/models/getMusicList_bean.dart @@ -9,6 +9,8 @@ class MusicListBean { String? uploadUserName; bool? likeOrNot; bool? collectOrNot; + + MusicListBean.formMap(Map map){ code = map['code']; msg= map['msg']; diff --git a/lib/models/getMyWorks.dart b/lib/models/getMyWorks.dart index e69de29..fbdef71 100644 --- a/lib/models/getMyWorks.dart +++ b/lib/models/getMyWorks.dart @@ -0,0 +1,34 @@ +class MyWorks { + int? code; + String? msg; + List? data; + + MyWorks.formMap(Map map) { + code = map['code']; + msg = map['msg']; + if (map['data'] == null) return; + + List? dataList = map['data']; + if (dataList == null) return; + + data = dataList + .map((item) => DataBean._formMap(item)) + .toList(); + } +} + +class DataBean { + int? id; + String? name; + String? coverPath; + String? musicPath; + String? singerName; + + DataBean._formMap(Map map) { + id = map['id']; + name = map['name']; + coverPath = map['coverPath']; + musicPath = map['musicPath']; + singerName = map['singerName']; + } +} diff --git a/lib/view/user/my_music_view.dart b/lib/view/user/my_music_view.dart index ff386f0..d4b988e 100644 --- a/lib/view/user/my_music_view.dart +++ b/lib/view/user/my_music_view.dart @@ -1,22 +1,94 @@ import 'package:flutter/material.dart'; import 'package:get/get.dart'; +import '../../common_widget/app_data.dart'; +import '../../models/getAllSongs_bean.dart'; import '../../view_model/home_view_model.dart'; +import '../../api/api_songlist.dart'; +import '../../api/api_songlist.dart'; -class MyMusicView extends StatefulWidget { - const MyMusicView({super.key}); +List flatten(Iterable> iterable) { + return iterable.expand((inner) => inner).toList(); +} +class MyMusicView extends StatefulWidget { + final int? songlistIdd; + const MyMusicView({Key? key, this.songlistIdd}) : super(key: key); @override State createState() => _MyMusicViewState(); } class _MyMusicViewState extends State { + int songsNum = 0; + List songlistId =[]; + List musicDetail = []; + List name = []; + List coverPath = []; + List musicPath = []; + List singerName =[]; + List uploadUserName = []; + final listVM = Get.put(HomeViewModel()); bool _isSelectMode = false; final List _mySongListSelections = List.generate(2, (index) => false); List _selectedItems = List.generate(10, (index) => false); + +//修改从这开始 + @override + void initState() { + super.initState(); + if (widget.songlistIdd != null) { + _fetchMyWorksData(); + } else { + // 处理 songlistIdd 为 null 的情况,例如显示错误消息或不执行数据获取 + print('Songlist ID is null, cannot fetch data.'); + } + } + + ///获取我的作品 + Future _fetchMyWorksData() async { + try { + MyMusicListBean bean2 = await SonglistApi().getAllSongs( + id: widget.songlistIdd!, + Authorization: AppData().currentToken, + ); + + setState(() { + // 初始化列表 + name = []; + coverPath = []; + musicPath = []; + singerName = []; + songlistId = []; + + // 遍历每个DataBean对象 + bean2.data?.forEach((dataBean) { + // 提取songlistId + songlistId.add(dataBean.songlistId); + + // 提取musicDetail对象 + SongDetails songDetails = dataBean.musicDetail!; + + // 添加歌曲信息到列表 + name.add(songDetails.name); + coverPath.add(songDetails.coverPath); + musicPath.add(songDetails.musicPath); + singerName.add(songDetails.singerName); + }); + + songsNum = name.length; // 歌曲数量 + print('赋值开始'); + print('赋值结束'); + }); + } catch (error) { + print('Error fetching myworks data: $error'); + } + } + //在这里结束 + + void _toggleSelectMode() { setState(() { _isSelectMode = !_isSelectMode; @@ -232,8 +304,10 @@ class _MyMusicViewState extends State { ], ), Expanded( - child: ListView.builder( - itemCount: 10, + child: songsNum == 0 + ? Center(child: Text('该歌单为空')) // 如果没有作品,显示提示文本 + : ListView.builder( + itemCount: songsNum, itemBuilder: (BuildContext context, int index) { return Container( padding: const EdgeInsets.symmetric(vertical: 5.0), @@ -249,8 +323,11 @@ class _MyMusicViewState extends State { shape: const CircleBorder(), activeColor: const Color(0xff429482), ) - : null, - title: Text('歌曲名 $index - 歌手'), + : CircleAvatar( + backgroundImage: NetworkImage(coverPath[index]), // 假设封面路径是网络资源 + radius: 25, + ), + title: Text('${name[index]} - ${singerName[index]}'), // 显示歌曲名和歌手名 trailing: _isSelectMode ? null : IconButton( @@ -444,3 +521,6 @@ class _MyMusicViewState extends State { ); } } + + + diff --git a/lib/view/user/my_work_view.dart b/lib/view/user/my_work_view.dart index 7b67e44..327effb 100644 --- a/lib/view/user/my_work_view.dart +++ b/lib/view/user/my_work_view.dart @@ -1,6 +1,9 @@ - import 'package:flutter/material.dart'; import 'package:get/get.dart'; +import 'package:music_player_miao/common_widget/Song_widegt.dart'; +import '../../api/api_songlist.dart'; +import '../../common_widget/app_data.dart'; +import '../../models/getMyWorks.dart'; import '../../view_model/home_view_model.dart'; class MyWorkView extends StatefulWidget { @@ -11,6 +14,12 @@ class MyWorkView extends StatefulWidget { } class _MyWorkViewState extends State { + int MyWorkCount = 0; + List MyWorkNames = []; + List Songid = []; + List coverPath = []; + List musicPath = []; + List singerName = []; final listVM = Get.put(HomeViewModel()); bool _isSelectMode = false; @@ -18,6 +27,37 @@ class _MyWorkViewState extends State { List _mySongListSelections = List.generate(2, (index) => false); List _selectedItems = List.generate(10, (index) => false); +//从这里开始是我要修改的请求接口 + @override + void initState() { + super.initState(); + print('初始化正常'); + _fetchMyWorksData(); + } + + ///获取我的作品 + Future _fetchMyWorksData() async { + try { + MyWorks bean2 = await SonglistApi().getMyworks( + Authorization: AppData().currentToken, + ); + + setState(() { + MyWorkNames = bean2.data!.map((data) => data.name!).toList(); + Songid = bean2.data!.map((data) => data.id!).toList(); + coverPath = bean2.data!.map((data) => data.coverPath!).toList(); + musicPath = bean2.data!.map((data) => data.musicPath!).toList(); + singerName = bean2.data!.map((data) => data.singerName!).toList(); + print('赋值开始'); + MyWorkCount = MyWorkNames.length; + print('赋值结束'); + }); + } catch (error) { + print('Error fetching myworks data: $error'); + } + } + //在这里结束 + void _toggleSelectMode() { setState(() { _isSelectMode = !_isSelectMode; @@ -248,8 +288,10 @@ class _MyWorkViewState extends State { ], ), Expanded( - child: ListView.builder( - itemCount: 10, + child: MyWorkCount == 0 + ? Center(child: Text('你还没有作品')) // 如果没有作品,显示提示文本 + : ListView.builder( + itemCount: MyWorkCount, itemBuilder: (BuildContext context, int index) { return Container( padding: const EdgeInsets.symmetric(vertical: 5.0), @@ -265,8 +307,11 @@ class _MyWorkViewState extends State { shape: const CircleBorder(), activeColor: const Color(0xff429482), ) - : null, - title: Text('歌曲名 $index - 歌手'), + : CircleAvatar( + backgroundImage: NetworkImage(coverPath[index]), // 假设封面路径是网络资源 + radius: 25, + ), + title: Text('${MyWorkNames[index]} - ${singerName[index]}'), // 显示歌曲名和歌手名 trailing: _isSelectMode ? null : IconButton( @@ -459,4 +504,4 @@ class _MyWorkViewState extends State { ); } -} +} \ No newline at end of file diff --git a/lib/view/user/user_view.dart b/lib/view/user/user_view.dart index c30ebb1..2868b9b 100644 --- a/lib/view/user/user_view.dart +++ b/lib/view/user/user_view.dart @@ -23,9 +23,9 @@ class UserView extends StatefulWidget { class _UserViewState extends State { final homeVM = Get.put(HomeViewModel()); final TextEditingController _controller = TextEditingController(); - int playlistCount = 2; + int playlistCount = 0; List playlistNames = []; - List playlistid = []; + List playlistid = []; @override void initState() { @@ -42,7 +42,7 @@ class _UserViewState extends State { setState(() { playlistNames = bean2.data!.map((data) => data.name!).toList(); - playlistid = bean2.data!.map((data) => data.id!).toList(); + playlistid = bean2.data!.map((data) => data.id!).toList(); // 确保这里的id是int类型 playlistCount = playlistNames.length; }); } catch (error) { @@ -107,12 +107,14 @@ class _UserViewState extends State { Container( padding: const EdgeInsets.only( left: 15, right: 15, top: 20, bottom: 20), + + //我的收藏 child: Column( mainAxisAlignment: MainAxisAlignment.start, children: [ InkWell( onTap: () { - Get.to(const MyMusicView()); + Get.to(MyMusicView()); }, child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, @@ -143,9 +145,13 @@ class _UserViewState extends State { const SizedBox( height: 10, ), + + //我的收藏和本地下载分界 + + InkWell( onTap: () { - Get.to(const MyMusicView()); + Get.to(MyMusicView()); }, child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, @@ -204,72 +210,43 @@ class _UserViewState extends State { ], ), Container( - padding: const EdgeInsets.only( - left: 15, right: 15, top: 10, bottom: 5), - child: Column( - mainAxisAlignment: MainAxisAlignment.start, - children: [ - InkWell( - onTap: () {}, - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Image.asset("assets/img/artist_pic.png"), - const Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - "我的收藏", - style: TextStyle(fontSize: 20), - ), - Text( - "19首", - style: TextStyle(fontSize: 16), - ), - ], - ), - const SizedBox( - width: 80, - ), - Image.asset( - "assets/img/user_next.png", - ) - ], - ), - ), - const SizedBox( - height: 10, - ), - InkWell( - onTap: () {}, - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Image.asset("assets/img/artist_pic.png"), - const Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - "本地下载", - style: TextStyle(fontSize: 20), - ), - Text( - "19首", - style: TextStyle(fontSize: 16), - ), - ], - ), - const SizedBox( - width: 80, - ), - Image.asset( - "assets/img/user_next.png", - ) - ], - ), + padding: const EdgeInsets.only(left: 15, right: 15, top: 10, bottom: 5), + child: ListView.builder( + shrinkWrap: true, // 使得ListView适应内容高度 + itemCount: playlistNames.length, // 根据歌单数量动态设置itemCount + itemBuilder: (context, index) { + return InkWell( + onTap: () { + print('点击成功'); + Get.to(MyMusicView(songlistIdd: playlistid[index])); + // 点击歌单时的回调,可以导航到歌单详情页 + //待添加 + }, + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Image.asset("assets/img/artist_pic.png"), + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + playlistNames[index], // 动态显示歌单名称 + style: TextStyle(fontSize: 20), + ), + Text( + '$playlistCount首', // 动态显示歌曲数量 + style: TextStyle(fontSize: 16), + ), + ], + ), + const SizedBox(width: 80), + Image.asset("assets/img/user_next.png"), + ], ), - ], - )), + ); + }, + ), + ), InkWell( onTap: () { Get.to(const MyMusicView()); diff --git a/pubspec.lock b/pubspec.lock index 1902b87..63d3431 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -13,58 +13,58 @@ packages: dependency: "direct main" description: name: audioplayers - sha256: c05c6147124cd63e725e861335a8b4d57300b80e6e92cea7c145c739223bbaef + sha256: c346ba5a39dc208f1bab55fc239855f573d69b0e832402114bf0b793622adc4d url: "https://pub.flutter-io.cn" source: hosted - version: "5.2.1" + version: "6.1.0" audioplayers_android: dependency: transitive description: name: audioplayers_android - sha256: b00e1a0e11365d88576320ec2d8c192bc21f1afb6c0e5995d1c57ae63156acb5 + sha256: de576b890befe27175c2f511ba8b742bec83765fa97c3ce4282bba46212f58e4 url: "https://pub.flutter-io.cn" source: hosted - version: "4.0.3" + version: "5.0.0" audioplayers_darwin: dependency: transitive description: name: audioplayers_darwin - sha256: "3034e99a6df8d101da0f5082dcca0a2a99db62ab1d4ddb3277bed3f6f81afe08" + sha256: e507887f3ff18d8e5a10a668d7bedc28206b12e10b98347797257c6ae1019c3b url: "https://pub.flutter-io.cn" source: hosted - version: "5.0.2" + version: "6.0.0" audioplayers_linux: dependency: transitive description: name: audioplayers_linux - sha256: "60787e73fefc4d2e0b9c02c69885402177e818e4e27ef087074cf27c02246c9e" + sha256: "3d3d244c90436115417f170426ce768856d8fe4dfc5ed66a049d2890acfa82f9" url: "https://pub.flutter-io.cn" source: hosted - version: "3.1.0" + version: "4.0.0" audioplayers_platform_interface: dependency: transitive description: name: audioplayers_platform_interface - sha256: "365c547f1bb9e77d94dd1687903a668d8f7ac3409e48e6e6a3668a1ac2982adb" + sha256: "6834dd48dfb7bc6c2404998ebdd161f79cd3774a7e6779e1348d54a3bfdcfaa5" url: "https://pub.flutter-io.cn" source: hosted - version: "6.1.0" + version: "7.0.0" audioplayers_web: dependency: transitive description: name: audioplayers_web - sha256: "22cd0173e54d92bd9b2c80b1204eb1eb159ece87475ab58c9788a70ec43c2a62" + sha256: "3609bdf0e05e66a3d9750ee40b1e37f2a622c4edb796cc600b53a90a30a2ace4" url: "https://pub.flutter-io.cn" source: hosted - version: "4.1.0" + version: "5.0.1" audioplayers_windows: dependency: transitive description: name: audioplayers_windows - sha256: "9536812c9103563644ada2ef45ae523806b0745f7a78e89d1b5fb1951de90e1a" + sha256: "8605762dddba992138d476f6a0c3afd9df30ac5b96039929063eceed416795c2" url: "https://pub.flutter-io.cn" source: hosted - version: "3.1.0" + version: "4.0.0" boolean_selector: dependency: transitive description: @@ -93,42 +93,50 @@ packages: dependency: transitive description: name: collection - sha256: f092b211a4319e98e5ff58223576de6c2803db36221657b46c82574721240687 + sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a url: "https://pub.flutter-io.cn" source: hosted - version: "1.17.2" + version: "1.18.0" cross_file: dependency: transitive description: name: cross_file - sha256: "2f9d2cbccb76127ba28528cb3ae2c2326a122446a83de5a056aaa3880d3882c5" + sha256: "7caf6a750a0c04effbb52a676dce9a4a592e10ad35c34d6d2d0e4811160d5670" url: "https://pub.flutter-io.cn" source: hosted - version: "0.3.3+7" + version: "0.3.4+2" crypto: dependency: transitive description: name: crypto - sha256: ff625774173754681d66daaf4a448684fb04b78f902da9cb3d308c19cc5e8bab + sha256: "1e445881f28f22d6140f181e07737b22f1e099a5e1ff94b0af2f9e4a463f4855" url: "https://pub.flutter-io.cn" source: hosted - version: "3.0.3" + version: "3.0.6" cupertino_icons: dependency: "direct main" description: name: cupertino_icons - sha256: d57953e10f9f8327ce64a508a355f0b1ec902193f66288e8cb5070e7c47eeb2d + sha256: ba631d1c7f7bef6b729a622b7b752645a2d076dba9976925b8f25725a30e1ee6 url: "https://pub.flutter-io.cn" source: hosted - version: "1.0.6" + version: "1.0.8" dio: dependency: "direct main" description: name: dio - sha256: "797e1e341c3dd2f69f2dad42564a6feff3bfb87187d05abb93b9609e6f1645c3" + sha256: "5598aa796bbf4699afd5c67c0f5f6e2ed542afc956884b9cd58c306966efc260" + url: "https://pub.flutter-io.cn" + source: hosted + version: "5.7.0" + dio_web_adapter: + dependency: transitive + description: + name: dio_web_adapter + sha256: "33259a9276d6cea88774a0000cfae0d861003497755969c92faa223108620dc8" url: "https://pub.flutter-io.cn" source: hosted - version: "5.4.0" + version: "2.0.0" fake_async: dependency: transitive description: @@ -141,58 +149,66 @@ packages: dependency: transitive description: name: ffi - sha256: "7bf0adc28a23d395f19f3f1eb21dd7cfd1dd9f8e1c50051c069122e6853bc878" + sha256: "16ed7b077ef01ad6170a3d0c57caa4a112a38d7a2ed5602e0aca9ca6f3d98da6" url: "https://pub.flutter-io.cn" source: hosted - version: "2.1.0" + version: "2.1.3" file: dependency: transitive description: name: file - sha256: "5fc22d7c25582e38ad9a8515372cd9a93834027aacf1801cf01164dac0ffa08c" + sha256: a3b4f84adafef897088c160faf7dfffb7696046cb13ae90b508c2cbc95d3b8d4 url: "https://pub.flutter-io.cn" source: hosted - version: "7.0.0" + version: "7.0.1" file_picker: dependency: "direct main" description: name: file_picker - sha256: "4e42aacde3b993c5947467ab640882c56947d9d27342a5b6f2895b23956954a6" + sha256: aac85f20436608e01a6ffd1fdd4e746a7f33c93a2c83752e626bdfaea139b877 url: "https://pub.flutter-io.cn" source: hosted - version: "6.1.1" + version: "8.1.3" file_selector_linux: dependency: transitive description: name: file_selector_linux - sha256: "045d372bf19b02aeb69cacf8b4009555fb5f6f0b7ad8016e5f46dd1387ddd492" + sha256: "712ce7fab537ba532c8febdb1a8f167b32441e74acd68c3ccb2e36dcb52c4ab2" url: "https://pub.flutter-io.cn" source: hosted - version: "0.9.2+1" + version: "0.9.3" file_selector_macos: dependency: transitive description: name: file_selector_macos - sha256: b15c3da8bd4908b9918111fa486903f5808e388b8d1c559949f584725a6594d6 + sha256: "271ab9986df0c135d45c3cdb6bd0faa5db6f4976d3e4b437cf7d0f258d941bfc" url: "https://pub.flutter-io.cn" source: hosted - version: "0.9.3+3" + version: "0.9.4+2" file_selector_platform_interface: dependency: transitive description: name: file_selector_platform_interface - sha256: "0aa47a725c346825a2bd396343ce63ac00bda6eff2fbc43eabe99737dede8262" + sha256: a3994c26f10378a039faa11de174d7b78eb8f79e4dd0af2a451410c1a5c3f66b url: "https://pub.flutter-io.cn" source: hosted - version: "2.6.1" + version: "2.6.2" file_selector_windows: dependency: transitive description: name: file_selector_windows - sha256: d3547240c20cabf205c7c7f01a50ecdbc413755814d6677f3cb366f04abcead0 + sha256: "8f5d2f6590d51ecd9179ba39c64f722edc15226cc93dcc8698466ad36a4a85a4" + url: "https://pub.flutter-io.cn" + source: hosted + version: "0.9.3+3" + fixnum: + dependency: transitive + description: + name: fixnum + sha256: b6dc7065e46c974bc7c5f143080a6764ec7a4be6da1285ececdc37be96de53be url: "https://pub.flutter-io.cn" source: hosted - version: "0.9.3+1" + version: "1.1.1" flutter: dependency: "direct main" description: flutter @@ -202,18 +218,18 @@ packages: dependency: "direct dev" description: name: flutter_lints - sha256: a25a15ebbdfc33ab1cd26c63a6ee519df92338a9c10f122adda92938253bef04 + sha256: "5398f14efa795ffb7a33e9b6a08798b26a180edac4ad7db3f231e40f82ce11e1" url: "https://pub.flutter-io.cn" source: hosted - version: "2.0.3" + version: "5.0.0" flutter_plugin_android_lifecycle: dependency: transitive description: name: flutter_plugin_android_lifecycle - sha256: b068ffc46f82a55844acfa4fdbb61fad72fa2aef0905548419d97f0f95c456da + sha256: "9b78450b89f059e96c9ebb355fa6b3df1d6b330436e0b885fb49594c41721398" url: "https://pub.flutter-io.cn" source: hosted - version: "2.0.17" + version: "2.0.23" flutter_swiper_view: dependency: "direct main" description: @@ -252,10 +268,10 @@ packages: dependency: "direct main" description: name: http - sha256: "759d1a329847dd0f39226c688d3e06a6b8679668e350e2891a6474f8b4bb8525" + sha256: b9c29a161230ee03d3ccf545097fccd9b87a5264228c5d348202e0f0c28f9010 url: "https://pub.flutter-io.cn" source: hosted - version: "1.1.0" + version: "1.2.2" http_parser: dependency: "direct main" description: @@ -268,34 +284,34 @@ packages: dependency: "direct main" description: name: image_picker - sha256: "7d7f2768df2a8b0a3cefa5ef4f84636121987d403130e70b17ef7e2cf650ba84" + sha256: "021834d9c0c3de46bf0fe40341fa07168407f694d9b2bb18d532dc1261867f7a" url: "https://pub.flutter-io.cn" source: hosted - version: "1.0.4" + version: "1.1.2" image_picker_android: dependency: transitive description: name: image_picker_android - sha256: d6a6e78821086b0b737009b09363018309bbc6de3fd88cc5c26bc2bb44a4957f + sha256: "8faba09ba361d4b246dc0a17cb4289b3324c2b9f6db7b3d457ee69106a86bd32" url: "https://pub.flutter-io.cn" source: hosted - version: "0.8.8+2" + version: "0.8.12+17" image_picker_for_web: dependency: transitive description: name: image_picker_for_web - sha256: "50bc9ae6a77eea3a8b11af5eb6c661eeb858fdd2f734c2a4fd17086922347ef7" + sha256: "717eb042ab08c40767684327be06a5d8dbb341fe791d514e4b92c7bbe1b7bb83" url: "https://pub.flutter-io.cn" source: hosted - version: "3.0.1" + version: "3.0.6" image_picker_ios: dependency: transitive description: name: image_picker_ios - sha256: "76ec722aeea419d03aa915c2c96bf5b47214b053899088c9abb4086ceecf97a7" + sha256: "4f0568120c6fcc0aaa04511cb9f9f4d29fc3d0139884b1d06be88dcec7641d6b" url: "https://pub.flutter-io.cn" source: hosted - version: "0.8.8+4" + version: "0.8.12+1" image_picker_linux: dependency: transitive description: @@ -316,10 +332,10 @@ packages: dependency: transitive description: name: image_picker_platform_interface - sha256: ed9b00e63977c93b0d2d2b343685bed9c324534ba5abafbb3dfbd6a780b1b514 + sha256: "9ec26d410ff46f483c5519c29c02ef0e02e13a543f882b152d4bfd2f06802f80" url: "https://pub.flutter-io.cn" source: hosted - version: "2.9.1" + version: "2.10.0" image_picker_windows: dependency: transitive description: @@ -328,54 +344,70 @@ packages: url: "https://pub.flutter-io.cn" source: hosted version: "0.2.1+1" - js: + leak_tracker: dependency: transitive description: - name: js - sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3 + name: leak_tracker + sha256: "3f87a60e8c63aecc975dda1ceedbc8f24de75f09e4856ea27daf8958f2f0ce05" url: "https://pub.flutter-io.cn" source: hosted - version: "0.6.7" + version: "10.0.5" + leak_tracker_flutter_testing: + dependency: transitive + description: + name: leak_tracker_flutter_testing + sha256: "932549fb305594d82d7183ecd9fa93463e9914e1b67cacc34bc40906594a1806" + url: "https://pub.flutter-io.cn" + source: hosted + version: "3.0.5" + leak_tracker_testing: + dependency: transitive + description: + name: leak_tracker_testing + sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3" + url: "https://pub.flutter-io.cn" + source: hosted + version: "3.0.1" lints: dependency: transitive description: name: lints - sha256: "0a217c6c989d21039f1498c3ed9f3ed71b354e69873f13a8dfc3c9fe76f1b452" + sha256: "3315600f3fb3b135be672bf4a178c55f274bebe368325ae18462c89ac1e3b413" url: "https://pub.flutter-io.cn" source: hosted - version: "2.1.1" + version: "5.0.0" matcher: dependency: transitive description: name: matcher - sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e" + sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb url: "https://pub.flutter-io.cn" source: hosted - version: "0.12.16" + version: "0.12.16+1" material_color_utilities: dependency: transitive description: name: material_color_utilities - sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41" + sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec url: "https://pub.flutter-io.cn" source: hosted - version: "0.5.0" + version: "0.11.1" meta: dependency: transitive description: name: meta - sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3" + sha256: bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7 url: "https://pub.flutter-io.cn" source: hosted - version: "1.9.1" + version: "1.15.0" mime: dependency: transitive description: name: mime - sha256: e4ff8e8564c03f255408decd16e7899da1733852a9110a58fe6d1b817684a63e + sha256: "41a20518f0cb1256669420fdba0cd90d21561e560ac240f26ef8322e45bb7ed6" url: "https://pub.flutter-io.cn" source: hosted - version: "1.0.4" + version: "2.0.0" nested: dependency: transitive description: @@ -388,34 +420,34 @@ packages: dependency: "direct main" description: name: path - sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917" + sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af" url: "https://pub.flutter-io.cn" source: hosted - version: "1.8.3" + version: "1.9.0" path_provider: dependency: transitive description: name: path_provider - sha256: a1aa8aaa2542a6bc57e381f132af822420216c80d4781f7aa085ca3229208aaa + sha256: fec0d61223fba3154d87759e3cc27fe2c8dc498f6386c6d6fc80d1afdd1bf378 url: "https://pub.flutter-io.cn" source: hosted - version: "2.1.1" + version: "2.1.4" path_provider_android: dependency: transitive description: name: path_provider_android - sha256: e595b98692943b4881b219f0a9e3945118d3c16bd7e2813f98ec6e532d905f72 + sha256: c464428172cb986b758c6d1724c603097febb8fb855aa265aeecc9280c294d4a url: "https://pub.flutter-io.cn" source: hosted - version: "2.2.1" + version: "2.2.12" path_provider_foundation: dependency: transitive description: name: path_provider_foundation - sha256: "19314d595120f82aca0ba62787d58dde2cc6b5df7d2f0daf72489e38d1b57f2d" + sha256: f234384a3fdd67f989b4d54a5d73ca2a6c422fa55ae694381ae0f4375cd1ea16 url: "https://pub.flutter-io.cn" source: hosted - version: "2.3.1" + version: "2.4.0" path_provider_linux: dependency: transitive description: @@ -428,42 +460,42 @@ packages: dependency: transitive description: name: path_provider_platform_interface - sha256: "94b1e0dd80970c1ce43d5d4e050a9918fce4f4a775e6142424c30a29a363265c" + sha256: "88f5779f72ba699763fa3a3b06aa4bf6de76c8e5de842cf6f29e2e06476c2334" url: "https://pub.flutter-io.cn" source: hosted - version: "2.1.1" + version: "2.1.2" path_provider_windows: dependency: transitive description: name: path_provider_windows - sha256: "8bc9f22eee8690981c22aa7fc602f5c85b497a6fb2ceb35ee5a5e5ed85ad8170" + sha256: bd6f00dbd873bfb70d0761682da2b3a2c2fccc2b9e84c495821639601d81afe7 url: "https://pub.flutter-io.cn" source: hosted - version: "2.2.1" + version: "2.3.0" platform: dependency: transitive description: name: platform - sha256: "0a279f0707af40c890e80b1e9df8bb761694c074ba7e1d4ab1bc4b728e200b59" + sha256: "5d6b1b0036a5f331ebc77c850ebc8506cbc1e9416c27e59b439f917a902a4984" url: "https://pub.flutter-io.cn" source: hosted - version: "3.1.3" + version: "3.1.6" plugin_platform_interface: dependency: transitive description: name: plugin_platform_interface - sha256: f4f88d4a900933e7267e2b353594774fc0d07fb072b47eedcd5b54e1ea3269f8 + sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02" url: "https://pub.flutter-io.cn" source: hosted - version: "2.1.7" + version: "2.1.8" provider: dependency: "direct main" description: name: provider - sha256: "9a96a0a19b594dbc5bf0f1f27d2bc67d5f95957359b461cd9feb44ed6ae75096" + sha256: c8a055ee5ce3fd98d6fc872478b03823ffdb448699c6ebdbbc71d59b596fd48c url: "https://pub.flutter-io.cn" source: hosted - version: "6.1.1" + version: "6.1.2" sky_engine: dependency: transitive description: flutter @@ -489,18 +521,18 @@ packages: dependency: transitive description: name: stack_trace - sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5 + sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b" url: "https://pub.flutter-io.cn" source: hosted - version: "1.11.0" + version: "1.11.1" stream_channel: dependency: transitive description: name: stream_channel - sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8" + sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7 url: "https://pub.flutter-io.cn" source: hosted - version: "2.1.1" + version: "2.1.2" string_scanner: dependency: transitive description: @@ -513,10 +545,10 @@ packages: dependency: transitive description: name: synchronized - sha256: "5fcbd27688af6082f5abd611af56ee575342c30e87541d0245f7ff99faa02c60" + sha256: "69fe30f3a8b04a0be0c15ae6490fc859a78ef4c43ae2dd5e8a623d45bfcf9225" url: "https://pub.flutter-io.cn" source: hosted - version: "3.1.0" + version: "3.3.0+3" term_glyph: dependency: transitive description: @@ -529,26 +561,26 @@ packages: dependency: transitive description: name: test_api - sha256: "75760ffd7786fffdfb9597c35c5b27eaeec82be8edfb6d71d32651128ed7aab8" + sha256: "5b8a98dafc4d5c4c9c72d8b31ab2b23fc13422348d2997120294d3bac86b4ddb" url: "https://pub.flutter-io.cn" source: hosted - version: "0.6.0" + version: "0.7.2" typed_data: dependency: transitive description: name: typed_data - sha256: facc8d6582f16042dd49f2463ff1bd6e2c9ef9f3d5da3d9b087e244a7b564b3c + sha256: f9049c039ebfeb4cf7a7104a675823cd72dba8297f264b6637062516699fa006 url: "https://pub.flutter-io.cn" source: hosted - version: "1.3.2" + version: "1.4.0" uuid: dependency: transitive description: name: uuid - sha256: df5a4d8f22ee4ccd77f8839ac7cb274ebc11ef9adcce8b92be14b797fe889921 + sha256: a5be9ef6618a7ac1e964353ef476418026db906c4facdedaa299b7a2e71690ff url: "https://pub.flutter-io.cn" source: hosted - version: "4.2.1" + version: "4.5.1" vector_math: dependency: transitive description: @@ -557,30 +589,38 @@ packages: url: "https://pub.flutter-io.cn" source: hosted version: "2.1.4" + vm_service: + dependency: transitive + description: + name: vm_service + sha256: "5c5f338a667b4c644744b661f309fb8080bb94b18a7e91ef1dbd343bed00ed6d" + url: "https://pub.flutter-io.cn" + source: hosted + version: "14.2.5" web: dependency: transitive description: name: web - sha256: dc8ccd225a2005c1be616fe02951e2e342092edf968cf0844220383757ef8f10 + sha256: cd3543bd5798f6ad290ea73d210f423502e71900302dde696f8bff84bf89a1cb url: "https://pub.flutter-io.cn" source: hosted - version: "0.1.4-beta" + version: "1.1.0" win32: dependency: transitive description: name: win32 - sha256: "7c99c0e1e2fa190b48d25c81ca5e42036d5cac81430ef249027d97b0935c553f" + sha256: e1d0cc62e65dc2561f5071fcbccecf58ff20c344f8f3dc7d4922df372a11df1f url: "https://pub.flutter-io.cn" source: hosted - version: "5.1.0" + version: "5.7.1" xdg_directories: dependency: transitive description: name: xdg_directories - sha256: "589ada45ba9e39405c198fe34eb0f607cddb2108527e658136120892beac46d2" + sha256: "7a3f37b05d989967cdddcbb571f1ea834867ae2faa29725fd085180e0883aa15" url: "https://pub.flutter-io.cn" source: hosted - version: "1.0.3" + version: "1.1.0" sdks: - dart: ">=3.1.2 <4.0.0" - flutter: ">=3.13.0" + dart: ">=3.5.0 <4.0.0" + flutter: ">=3.24.0" diff --git a/pubspec.yaml b/pubspec.yaml index c825d0c..0f8ac3e 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -32,7 +32,7 @@ dependencies: sdk: flutter flutter_swiper_view: 1.1.8 - audioplayers: ^5.2.1 + audioplayers: ^6.1.0 @@ -42,7 +42,7 @@ dependencies: get: ^4.1.1 provider: ^6.0.5 image_picker: ^1.0.4 - file_picker: ^6.0.0 + file_picker: ^8.1.3 http: ^1.1.0 dio: ^5.3.3 get_storage: ^2.1.1 @@ -57,7 +57,7 @@ dev_dependencies: # activated in the `analysis_options.yaml` file located at the root of your # package. See that file for information about deactivating specific lint # rules and activating additional ones. - flutter_lints: ^2.0.0 + flutter_lints: ^5.0.0 # For information on the generic Dart part of this file, see the # following page: https://dart.dev/tools/pub/pubspec diff --git a/windows/flutter/CMakeLists.txt b/windows/flutter/CMakeLists.txt index 930d207..903f489 100644 --- a/windows/flutter/CMakeLists.txt +++ b/windows/flutter/CMakeLists.txt @@ -10,6 +10,11 @@ include(${EPHEMERAL_DIR}/generated_config.cmake) # https://github.com/flutter/flutter/issues/57146. set(WRAPPER_ROOT "${EPHEMERAL_DIR}/cpp_client_wrapper") +# Set fallback configurations for older versions of the flutter tool. +if (NOT DEFINED FLUTTER_TARGET_PLATFORM) + set(FLUTTER_TARGET_PLATFORM "windows-x64") +endif() + # === Flutter Library === set(FLUTTER_LIBRARY "${EPHEMERAL_DIR}/flutter_windows.dll") @@ -92,7 +97,7 @@ add_custom_command( COMMAND ${CMAKE_COMMAND} -E env ${FLUTTER_TOOL_ENVIRONMENT} "${FLUTTER_ROOT}/packages/flutter_tools/bin/tool_backend.bat" - windows-x64 $ + ${FLUTTER_TARGET_PLATFORM} $ VERBATIM ) add_custom_target(flutter_assemble DEPENDS