diff --git a/RELEASE/app-release_version_1_4.aab b/RELEASE/app-release_version_1_4.aab new file mode 100644 index 0000000..4dbd130 Binary files /dev/null and b/RELEASE/app-release_version_1_4.aab differ diff --git a/android/app/build.gradle b/android/app/build.gradle index 68c82ab..b7e9b1d 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -32,7 +32,7 @@ apply plugin: 'kotlin-android' apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" android { - compileSdkVersion 31 + compileSdkVersion 33 sourceSets { main.java.srcDirs += 'src/main/kotlin' diff --git a/lib/Screens/Map/marker_view.dart b/lib/Screens/Map/marker_view.dart index 731cd66..e463041 100644 --- a/lib/Screens/Map/marker_view.dart +++ b/lib/Screens/Map/marker_view.dart @@ -16,6 +16,20 @@ class MarkerViewWidget extends StatefulWidget { class _MarkerInfoWidget extends State { Size sizeScreen = new Size(1080.0, 1920.0); // Tablet resolution + CarouselController sliderController; + int currentIndex = 1; + + @override + void initState() { + sliderController = CarouselController(); + super.initState(); + } + + @override + void dispose() { + sliderController = null; + super.dispose(); + } @override Widget build(BuildContext context) { @@ -90,90 +104,133 @@ class _MarkerInfoWidget extends State { Padding( padding: const EdgeInsets.only(top: 75), child: Center( - child: Column( - crossAxisAlignment: CrossAxisAlignment.center, - mainAxisAlignment: MainAxisAlignment.spaceEvenly, - children: [ - if(mapContext.getSelectedMarker().images != null && mapContext.getSelectedMarker().images.length > 0) - CarouselSlider( - options: CarouselOptions( - height: size.height *0.3, - enlargeCenterPage: true, - reverse: false, - ), - items: mapContext.getSelectedMarker().images.map((i) { - return Builder( - builder: (BuildContext context) { - return Padding( - padding: const EdgeInsets.all(8.0), - child: Container( - //width: MediaQuery.of(context).size.width *0.9, - /*decoration: BoxDecoration( - borderRadius: BorderRadius.circular(20.0), - border: Border.all(width: 0.3, color: kSecondGrey), - image: i.imageSource != null ? new DecorationImage( - fit: BoxFit.contain, - image: new NetworkImage( - i.imageSource, + child: Stack( + children: [ + Column( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + children: [ + if(mapContext.getSelectedMarker().images != null && mapContext.getSelectedMarker().images.length > 0) + CarouselSlider( + carouselController: sliderController, + options: CarouselOptions( + onPageChanged: (int index, CarouselPageChangedReason reason) { + setState(() { + currentIndex = index + 1; + }); + }, + height: size.height *0.3, + enlargeCenterPage: true, + pageSnapping: true, + reverse: false, + ), + items: mapContext.getSelectedMarker().images.map((i) { + return Builder( + builder: (BuildContext context) { + return Padding( + padding: const EdgeInsets.all(8.0), + child: Container( + //width: MediaQuery.of(context).size.width *0.9, + /*decoration: BoxDecoration( + borderRadius: BorderRadius.circular(20.0), + border: Border.all(width: 0.3, color: kSecondGrey), + image: i.imageSource != null ? new DecorationImage( + fit: BoxFit.contain, + image: new NetworkImage( + i.imageSource, + ), + ): null, + boxShadow: [ + BoxShadow( + color: kBackgroundSecondGrey, + spreadRadius: 0.3, + blurRadius: 3, + offset: Offset(0, 1.1), // changes position of shadow + ), + ], + ),*/ + child: AspectRatio( + aspectRatio: 16 / 9, + child: ClipRect( + child: PhotoView( + imageProvider: new NetworkImage( + i.imageSource, + ), + minScale: PhotoViewComputedScale.contained * 0.8, + maxScale: PhotoViewComputedScale.contained * 3.0, + backgroundDecoration: BoxDecoration( + color: kBackgroundSecondGrey, + shape: BoxShape.rectangle, + borderRadius: BorderRadius.circular(15.0), + ), + ), ), - ): null, - boxShadow: [ - BoxShadow( - color: kBackgroundSecondGrey, - spreadRadius: 0.3, - blurRadius: 3, - offset: Offset(0, 1.1), // changes position of shadow - ), - ], - ),*/ - child: AspectRatio( - aspectRatio: 16 / 9, - child: ClipRect( - child: PhotoView( - imageProvider: new NetworkImage( - i.imageSource, - ), - minScale: PhotoViewComputedScale.contained * 0.8, - maxScale: PhotoViewComputedScale.contained * 3.0, - backgroundDecoration: BoxDecoration( - color: kBackgroundSecondGrey, - shape: BoxShape.rectangle, - borderRadius: BorderRadius.circular(15.0), - ), - ), + ) ), - ) - ), + ); + }, ); - }, - ); - }).toList(), - ), - // Description - Container( - height: mapContext.getSelectedMarker().images != null && mapContext.getSelectedMarker().images.length > 0 ? size.height *0.3 : size.height *0.6, - width: MediaQuery.of(context).size.width *0.35, - decoration: BoxDecoration( - color: kBackgroundColor, - shape: BoxShape.rectangle, - borderRadius: BorderRadius.circular(10.0), - boxShadow: [ - BoxShadow( - color: kBackgroundSecondGrey, - spreadRadius: 0.5, - blurRadius: 1.1, - offset: Offset(0, 1.1), // changes position of shadow - ), - ], - ), - child: SingleChildScrollView( - child: Padding( - padding: const EdgeInsets.all(15.0), - child: Text(mapContext.getSelectedMarker().description, textAlign: TextAlign.center, style: TextStyle(fontSize: kDescriptionSize)), + }).toList(), ), - ), + // Description + Container( + height: mapContext.getSelectedMarker().images != null && mapContext.getSelectedMarker().images.length > 0 ? size.height *0.3 : size.height *0.6, + width: MediaQuery.of(context).size.width *0.35, + decoration: BoxDecoration( + color: kBackgroundColor, + shape: BoxShape.rectangle, + borderRadius: BorderRadius.circular(10.0), + boxShadow: [ + BoxShadow( + color: kBackgroundSecondGrey, + spreadRadius: 0.5, + blurRadius: 1.1, + offset: Offset(0, 1.1), // changes position of shadow + ), + ], + ), + child: SingleChildScrollView( + child: Padding( + padding: const EdgeInsets.all(15.0), + child: Text(mapContext.getSelectedMarker().description, textAlign: TextAlign.center, style: TextStyle(fontSize: kDescriptionSize)), + ), + ), + ), + ] + ), + if(mapContext.getSelectedMarker().images != null && mapContext.getSelectedMarker().images.length > 1) + Positioned( + top: MediaQuery.of(context).size.height * 0.125, + right: -10, + child: InkWell( + onTap: () { + if (mapContext.getSelectedMarker().images.length > 0) + sliderController.nextPage(duration: new Duration(milliseconds: 500), curve: Curves.fastOutSlowIn); + }, + child: Icon( + Icons.chevron_right, + size: 150, + color: kMainRed, + ), + ) ), - ] + if(mapContext.getSelectedMarker().images != null && mapContext.getSelectedMarker().images.length > 1) + Positioned( + top: MediaQuery.of(context).size.height * 0.125, + left: -10, + child: InkWell( + onTap: () { + if (mapContext.getSelectedMarker().images.length > 0) + sliderController.previousPage(duration: new Duration(milliseconds: 500), curve: Curves.fastOutSlowIn); + }, + child: Icon( + Icons.chevron_left, + size: 150, + color: kMainRed, + ), + ) + ), + ], ), ), ), diff --git a/lib/Screens/Quizz/quizz_view.dart b/lib/Screens/Quizz/quizz_view.dart index 5efe7f4..cea7c3c 100644 --- a/lib/Screens/Quizz/quizz_view.dart +++ b/lib/Screens/Quizz/quizz_view.dart @@ -8,6 +8,7 @@ import 'package:managerapi/api.dart'; import 'package:provider/provider.dart'; import 'package:tablet_app/Components/Buttons/rounded_button.dart'; import 'package:tablet_app/Models/ResponseSubDTO.dart'; +import 'package:tablet_app/Screens/Quizz/showResponses.dart'; import 'package:tablet_app/app_context.dart'; import 'package:tablet_app/constants.dart'; @@ -30,6 +31,7 @@ class _QuizzViewWidget extends State { CarouselController sliderController; int currentIndex = 1; bool showResult = false; + bool showResponses = false; @override void initState() { @@ -38,6 +40,7 @@ class _QuizzViewWidget extends State { _controllerCenter = ConfettiController(duration: const Duration(seconds: 10)); sliderController = CarouselController(); + quizzDTO = QuizzDTO.fromJson(jsonDecode(widget.section.data)); quizzDTO.questions.sort((a, b) => a.order.compareTo(b.order)); @@ -105,7 +108,7 @@ class _QuizzViewWidget extends State { ), ), ), - if (levelToShow?.source_ != null) + if (!showResponses && levelToShow?.source_ != null) Container( //height: size.height * 0.2, //width: size.width * 0.25, @@ -153,7 +156,7 @@ class _QuizzViewWidget extends State { child: Padding( padding: const EdgeInsets.only(bottom: 10), child: Container( - width: MediaQuery.of(context).size.width *0.65, + width: MediaQuery.of(context).size.width *0.75, height: MediaQuery.of(context).size.height *0.25, decoration: BoxDecoration( color: kBackgroundLight, @@ -182,10 +185,36 @@ class _QuizzViewWidget extends State { ), ), ), + if(showResponses) + Container( + child: Container( + width: MediaQuery.of(context).size.width *0.75, + height: MediaQuery.of(context).size.height *0.35, + decoration: BoxDecoration( + color: kBackgroundLight, + shape: BoxShape.rectangle, + borderRadius: BorderRadius.circular(10.0), + boxShadow: [ + BoxShadow( + color: kBackgroundSecondGrey, + spreadRadius: 0.3, + blurRadius: 4, + offset: Offset(0, 2), // changes position of shadow + ), + ], + ), + child: Center( + child: Container( + width: double.infinity, + child: ShowReponsesWidget(questionsSubDTO: _questionsSubDTO), + ), + ), + ), + ), // Buttons Container( child: Row( - mainAxisAlignment: MainAxisAlignment.spaceAround, + mainAxisAlignment: MainAxisAlignment.spaceEvenly, crossAxisAlignment: CrossAxisAlignment.center, children: [ Container( @@ -198,6 +227,7 @@ class _QuizzViewWidget extends State { press: () { setState(() { showResult = false; + showResponses = false; currentIndex = 1; _questionsSubDTO = QuestionSubDTO().fromJSON(quizzDTO.questions); }); @@ -207,6 +237,24 @@ class _QuizzViewWidget extends State { vertical: 10 ), ), + if(!showResponses) + Container( + height: 85, + child: RoundedButton( + text: "Voir les réponses", + color: kBackgroundSecondGrey, + textColor: kBackgroundLight, + icon: Icons.assignment_turned_in, + press: () { + setState(() { + showResponses = true; + }); + }, + fontSize: 30, + horizontal: 30, + vertical: 10 + ), + ) ], ), ), diff --git a/lib/Screens/Quizz/showResponses.dart b/lib/Screens/Quizz/showResponses.dart new file mode 100644 index 0000000..723f756 --- /dev/null +++ b/lib/Screens/Quizz/showResponses.dart @@ -0,0 +1,246 @@ +import 'dart:convert'; +import 'dart:developer'; +import 'package:carousel_slider/carousel_slider.dart'; +import 'package:flutter/gestures.dart'; +import 'package:flutter/material.dart'; +import 'package:managerapi/api.dart'; +import 'package:provider/provider.dart'; +import 'package:tablet_app/Models/ResponseSubDTO.dart'; +import 'package:tablet_app/app_context.dart'; +import 'package:tablet_app/constants.dart'; + + + +class ShowReponsesWidget extends StatefulWidget { + List questionsSubDTO; + ShowReponsesWidget({this.questionsSubDTO}); + + @override + _ShowReponsesWidget createState() => _ShowReponsesWidget(); +} + +class _ShowReponsesWidget extends State { + List _questionsSubDTO = []; + CarouselController sliderController; + int currentIndex = 1; + + @override + void initState() { + super.initState(); + sliderController = CarouselController(); + _questionsSubDTO = widget.questionsSubDTO; + } + + @override + void dispose() { + sliderController = null; + currentIndex = 1; + super.dispose(); + } + + @override + Widget build(BuildContext context) { + Size sizeAll = MediaQuery.of(context).size; + + Size size = Size(sizeAll.width * 0.65, sizeAll.height * 0.32); + final appContext = Provider.of(context); + + return Stack( + children: [ + if(_questionsSubDTO != null && _questionsSubDTO.length > 0) + CarouselSlider( + carouselController: sliderController, + options: CarouselOptions( + onPageChanged: (int index, CarouselPageChangedReason reason) { + setState(() { + currentIndex = index + 1; + }); + }, + height: size.height, + enlargeCenterPage: true, + //scrollPhysics: NeverScrollableScrollPhysics(), + reverse: false, + ), + items: _questionsSubDTO.map((i) { + return Builder( + builder: (BuildContext context) { + return Padding( + padding: const EdgeInsets.all(8.0), + child: Container( + width: size.width, + height: size.height, + margin: EdgeInsets.symmetric(horizontal: 5.0), + decoration: BoxDecoration( + color: kBackgroundLight, + shape: BoxShape.rectangle, + borderRadius: BorderRadius.circular(20.0), + image: i.source_ != null ? new DecorationImage( + fit: BoxFit.contain, + opacity: 0.35, + image: new NetworkImage( + i.source_, + ), + ): null, + boxShadow: [ + BoxShadow( + color: kBackgroundSecondGrey, + spreadRadius: 0.5, + blurRadius: 5, + offset: Offset(0, 1.5), // changes position of shadow + ), + ], + ), + child: Column( + //crossAxisAlignment: CrossAxisAlignment.center, + //mainAxisAlignment: MainAxisAlignment.spaceEvenly, + children: [ + Padding( + padding: const EdgeInsets.all(10.0), + child: Container( + //width: MediaQuery.of(context).size.width *0.65, + height: size.height *0.25, + child: Stack( + children: [ + Center( + child: Container( + decoration: BoxDecoration( + color: kBackgroundLight, + shape: BoxShape.rectangle, + borderRadius: BorderRadius.circular(10.0), + boxShadow: [ + BoxShadow( + color: kBackgroundSecondGrey, + spreadRadius: 0.3, + blurRadius: 4, + offset: Offset(0, 2), // changes position of shadow + ), + ], + ), + width: size.width *0.8, + height: size.height *0.18, + child: Center( + child: SingleChildScrollView( + child: Padding( + padding: const EdgeInsets.all(1.0), + child: Text(i.label.firstWhere((translation) => translation.language == appContext.getContext().language).value != null ? i.label.firstWhere((translation) => translation.language == appContext.getContext().language).value : "", textAlign: TextAlign.center, style: TextStyle(fontSize: kDescriptionSize)), + ), + ), + ), + ) + ), + ] + ), + ), + ), + Expanded( + child: Padding( + padding: const EdgeInsets.all(1.0), + child: Container( + height: size.height * 0.5, + width: size.width * 0.88, + //color: Colors.green, + child: Padding( + padding: const EdgeInsets.all(5.0), + child: GridView.builder( + gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( + crossAxisCount: 2, + mainAxisExtent: 125, + mainAxisSpacing: 15, + crossAxisSpacing: 5, + ), + itemCount: i.responsesSubDTO.length, + itemBuilder: (BuildContext ctx, index) { + return Padding( + padding: const EdgeInsets.all(5.0), + child: Container( + alignment: Alignment.center, + child: Text(i.responsesSubDTO[index].label.firstWhere((translation) => translation.language == appContext.getContext().language).value != null ? i.responsesSubDTO[index].label.firstWhere((translation) => translation.language == appContext.getContext().language).value : "", textAlign: TextAlign.center, style: TextStyle(fontSize: kDescriptionSize, color: i.chosen == index ? Colors.white : Colors.black)), + decoration: BoxDecoration( + color: i.responsesSubDTO[index].isGood ? kGreen : i.chosen == index ? kMainRed : kBackgroundLight, + shape: BoxShape.rectangle, + borderRadius: BorderRadius.circular(10.0), + boxShadow: [ + BoxShadow( + color: kBackgroundSecondGrey, + spreadRadius: 0.3, + blurRadius: 4, + offset: Offset(0, 2), // changes position of shadow + ), + ], + ), + ), + ); + }), + ), + ), + ), + ), + ], + ) + ), + ); + }, + ); + }).toList(), + ), + if(_questionsSubDTO != null && _questionsSubDTO.length > 1 && currentIndex != _questionsSubDTO.length && _questionsSubDTO[currentIndex-1].chosen != null && widget.questionsSubDTO.length > 0) + Positioned( + top: size.height * 0.35, + right: 60, + child: InkWell( + onTap: () { + if(_questionsSubDTO[currentIndex-1].chosen != null && widget.questionsSubDTO.length > 0) { + sliderController.nextPage(duration: new Duration(milliseconds: 500), curve: Curves.fastOutSlowIn); + /*Fluttertoast.showToast( + msg: "Vous n'avez pas répondu à cette question", + toastLength: Toast.LENGTH_SHORT, + gravity: ToastGravity.BOTTOM, + timeInSecForIosWeb: 1, + backgroundColor: kMainRed, + textColor: Colors.white, + fontSize: 35.0 + );*/ + } + }, + child: Icon( + Icons.chevron_right, + size: 150, + color: kMainRed, + ), + ) + ), + if(_questionsSubDTO != null && _questionsSubDTO.length > 1 && currentIndex != 1) + Positioned( + top: size.height * 0.35, + left: 60, + child: InkWell( + onTap: () { + if(currentIndex > 1) + sliderController.previousPage(duration: new Duration(milliseconds: 500), curve: Curves.fastOutSlowIn); + }, + child: Icon( + Icons.chevron_left, + size: 150, + color: kMainRed, + ), + ) + ), + if(_questionsSubDTO != null && _questionsSubDTO.length > 0) + Padding( + padding: const EdgeInsets.only(bottom: 0), + child: Align( + alignment: Alignment.bottomCenter, + child: InkWell( + child: Text( + currentIndex.toString()+'/'+ widget.questionsSubDTO.length.toString(), + style: TextStyle(fontSize: 30, fontWeight: FontWeight.w500), + ), + ) + ), + ), + if(_questionsSubDTO == null || _questionsSubDTO.length == 0) + Center(child: Text("Aucune question à afficher", style: TextStyle(fontSize: kNoneInfoOrIncorrect),)) + ] + ); + } +} \ No newline at end of file diff --git a/lib/constants.dart b/lib/constants.dart index 42fdc98..a45573c 100644 --- a/lib/constants.dart +++ b/lib/constants.dart @@ -9,6 +9,7 @@ const kTestSecondColor = Color(0xFF2F4858); const kMainRed = Color(0xFF8b0000); const kSecondRed = Color(0xFF622727); const kTextRed = Color(0xFFba0505); +const kGreen = Color(0xFF15bd5b); const kBackgroundGrey = Color(0xFFb5b7b9); const kBackgroundSecondGrey = Color(0xFF5b5b63); diff --git a/linux/flutter/generated_plugins.cmake b/linux/flutter/generated_plugins.cmake index 51436ae..2e1de87 100644 --- a/linux/flutter/generated_plugins.cmake +++ b/linux/flutter/generated_plugins.cmake @@ -5,6 +5,9 @@ list(APPEND FLUTTER_PLUGIN_LIST ) +list(APPEND FLUTTER_FFI_PLUGIN_LIST +) + set(PLUGIN_BUNDLED_LIBRARIES) foreach(plugin ${FLUTTER_PLUGIN_LIST}) @@ -13,3 +16,8 @@ foreach(plugin ${FLUTTER_PLUGIN_LIST}) list(APPEND PLUGIN_BUNDLED_LIBRARIES $) list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${plugin}_bundled_libraries}) endforeach(plugin) + +foreach(ffi_plugin ${FLUTTER_FFI_PLUGIN_LIST}) + add_subdirectory(flutter/ephemeral/.plugin_symlinks/${ffi_plugin}/linux plugins/${ffi_plugin}) + list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${ffi_plugin}_bundled_libraries}) +endforeach(ffi_plugin) diff --git a/pubspec.lock b/pubspec.lock index 63a29c5..2d922a9 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -7,14 +7,14 @@ packages: name: archive url: "https://pub.dartlang.org" source: hosted - version: "2.0.13" + version: "3.3.2" args: dependency: transitive description: name: args url: "https://pub.dartlang.org" source: hosted - version: "1.6.0" + version: "2.3.1" async: dependency: transitive description: @@ -28,7 +28,7 @@ packages: name: auto_size_text url: "https://pub.dartlang.org" source: hosted - version: "2.1.0" + version: "3.0.0" boolean_selector: dependency: transitive description: @@ -42,7 +42,7 @@ packages: name: carousel_slider url: "https://pub.dartlang.org" source: hosted - version: "4.0.0" + version: "4.1.1" characters: dependency: transitive description: @@ -57,6 +57,20 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.3.1" + checked_yaml: + dependency: transitive + description: + name: checked_yaml + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.1" + cli_util: + dependency: transitive + description: + name: cli_util + url: "https://pub.dartlang.org" + source: hosted + version: "0.3.5" clock: dependency: transitive description: @@ -70,35 +84,28 @@ packages: name: collection url: "https://pub.dartlang.org" source: hosted - version: "1.15.0" + version: "1.16.0" confetti: dependency: "direct main" description: name: confetti url: "https://pub.dartlang.org" source: hosted - version: "0.6.0" - convert: - dependency: transitive - description: - name: convert - url: "https://pub.dartlang.org" - source: hosted - version: "2.1.1" + version: "0.7.0" crypto: dependency: transitive description: name: crypto url: "https://pub.dartlang.org" source: hosted - version: "2.1.5" + version: "3.0.2" cupertino_icons: dependency: "direct main" description: name: cupertino_icons url: "https://pub.dartlang.org" source: hosted - version: "1.0.4" + version: "1.0.5" device_info: dependency: "direct main" description: @@ -126,14 +133,14 @@ packages: name: event_bus url: "https://pub.dartlang.org" source: hosted - version: "1.1.1" + version: "2.0.0" fake_async: dependency: transitive description: name: fake_async url: "https://pub.dartlang.org" source: hosted - version: "1.2.0" + version: "1.3.0" flare_flutter: dependency: "direct main" description: @@ -152,21 +159,21 @@ packages: name: flutter_inappwebview url: "https://pub.dartlang.org" source: hosted - version: "4.0.0+4" + version: "5.7.1" flutter_launcher_icons: dependency: "direct main" description: name: flutter_launcher_icons url: "https://pub.dartlang.org" source: hosted - version: "0.8.1" + version: "0.10.0" flutter_plugin_android_lifecycle: dependency: transitive description: name: flutter_plugin_android_lifecycle url: "https://pub.dartlang.org" source: hosted - version: "2.0.5" + version: "2.0.7" flutter_test: dependency: "direct dev" description: flutter @@ -183,21 +190,35 @@ packages: name: fluttertoast url: "https://pub.dartlang.org" source: hosted - version: "8.0.9" + version: "8.1.1" google_maps_flutter: dependency: "direct main" description: name: google_maps_flutter url: "https://pub.dartlang.org" source: hosted - version: "2.1.3" + version: "2.2.1" + google_maps_flutter_android: + dependency: transitive + description: + name: google_maps_flutter_android + url: "https://pub.dartlang.org" + source: hosted + version: "2.3.3" + google_maps_flutter_ios: + dependency: transitive + description: + name: google_maps_flutter_ios + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.12" google_maps_flutter_platform_interface: dependency: transitive description: name: google_maps_flutter_platform_interface url: "https://pub.dartlang.org" source: hosted - version: "2.1.5" + version: "2.2.4" http: dependency: "direct main" description: @@ -218,7 +239,7 @@ packages: name: image url: "https://pub.dartlang.org" source: hosted - version: "2.1.19" + version: "3.2.2" intl: dependency: transitive description: @@ -232,7 +253,14 @@ packages: name: js url: "https://pub.dartlang.org" source: hosted - version: "0.6.3" + version: "0.6.4" + json_annotation: + dependency: transitive + description: + name: json_annotation + url: "https://pub.dartlang.org" + source: hosted + version: "4.7.0" managerapi: dependency: "direct main" description: @@ -253,7 +281,7 @@ packages: name: material_color_utilities url: "https://pub.dartlang.org" source: hosted - version: "0.1.3" + version: "0.1.4" meta: dependency: transitive description: @@ -261,20 +289,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.7.0" - mime: - dependency: transitive - description: - name: mime - url: "https://pub.dartlang.org" - source: hosted - version: "0.9.7" mqtt_client: dependency: "direct main" description: name: mqtt_client url: "https://pub.dartlang.org" source: hosted - version: "8.2.0" + version: "9.6.8" nested: dependency: transitive description: @@ -288,7 +309,7 @@ packages: name: path url: "https://pub.dartlang.org" source: hosted - version: "1.8.0" + version: "1.8.1" pedantic: dependency: transitive description: @@ -302,28 +323,28 @@ packages: name: petitparser url: "https://pub.dartlang.org" source: hosted - version: "3.1.0" + version: "5.0.0" photo_view: dependency: "direct main" description: name: photo_view url: "https://pub.dartlang.org" source: hosted - version: "0.13.0" + version: "0.14.0" plugin_platform_interface: dependency: transitive description: name: plugin_platform_interface url: "https://pub.dartlang.org" source: hosted - version: "2.1.2" + version: "2.1.3" provider: dependency: "direct main" description: name: provider url: "https://pub.dartlang.org" source: hosted - version: "5.0.0" + version: "6.0.4" sky_engine: dependency: transitive description: flutter @@ -335,21 +356,21 @@ packages: name: source_span url: "https://pub.dartlang.org" source: hosted - version: "1.8.1" + version: "1.8.2" sqflite: dependency: "direct main" description: name: sqflite url: "https://pub.dartlang.org" source: hosted - version: "2.0.2" + version: "2.0.3+1" sqflite_common: dependency: transitive description: name: sqflite_common url: "https://pub.dartlang.org" source: hosted - version: "2.2.1" + version: "2.4.0" stack_trace: dependency: transitive description: @@ -370,7 +391,7 @@ packages: name: stream_transform url: "https://pub.dartlang.org" source: hosted - version: "2.0.0" + version: "2.0.1" string_scanner: dependency: transitive description: @@ -384,7 +405,7 @@ packages: name: synchronized url: "https://pub.dartlang.org" source: hosted - version: "3.0.0" + version: "3.0.0+3" term_glyph: dependency: transitive description: @@ -398,77 +419,70 @@ packages: name: test_api url: "https://pub.dartlang.org" source: hosted - version: "0.4.8" + version: "0.4.9" typed_data: dependency: transitive description: name: typed_data url: "https://pub.dartlang.org" source: hosted - version: "1.3.0" - uuid: - dependency: transitive - description: - name: uuid - url: "https://pub.dartlang.org" - source: hosted - version: "2.2.2" + version: "1.3.1" vector_math: dependency: transitive description: name: vector_math url: "https://pub.dartlang.org" source: hosted - version: "2.1.1" + version: "2.1.2" webview_flutter: dependency: "direct main" description: name: webview_flutter url: "https://pub.dartlang.org" source: hosted - version: "2.8.0" + version: "3.0.4" webview_flutter_android: dependency: transitive description: name: webview_flutter_android url: "https://pub.dartlang.org" source: hosted - version: "2.8.3" + version: "2.10.4" webview_flutter_platform_interface: dependency: transitive description: name: webview_flutter_platform_interface url: "https://pub.dartlang.org" source: hosted - version: "1.8.1" + version: "1.9.5" webview_flutter_wkwebview: dependency: transitive description: name: webview_flutter_wkwebview url: "https://pub.dartlang.org" source: hosted - version: "2.7.1" + version: "2.9.5" xml: dependency: transitive description: name: xml url: "https://pub.dartlang.org" source: hosted - version: "4.5.1" + version: "6.1.0" yaml: dependency: transitive description: name: yaml url: "https://pub.dartlang.org" source: hosted - version: "2.2.1" + version: "3.1.1" youtube_player_flutter: dependency: "direct main" description: name: youtube_player_flutter url: "https://pub.dartlang.org" source: hosted - version: "7.0.0+7" + version: "8.1.1" sdks: - dart: ">=2.16.0 <3.0.0" - flutter: ">=2.5.0" + dart: ">=2.17.0 <3.0.0" + flutter: ">=3.0.0" diff --git a/pubspec.yaml b/pubspec.yaml index 9a05481..23bfd9c 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -15,7 +15,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev # In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion. # Read more about iOS versioning at # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html -version: 1.3.0+2 +version: 1.4.0+4 environment: sdk: ">=2.7.0 <3.0.0" @@ -24,21 +24,21 @@ dependencies: flutter: sdk: flutter sqflite: - webview_flutter: ^2.0.2 + webview_flutter: ^3.0.4 google_maps_flutter: ^2.0.1 flare_flutter: ^3.0.1 - provider: ^5.0.0 + provider: ^6.0.4 http: ^0.12.2 - auto_size_text: ^2.1.0 + auto_size_text: ^3.0.0 fluttertoast: device_info: ^2.0.2 enum_to_string: ^2.0.1 carousel_slider: ^4.0.0 - youtube_player_flutter: ^7.0.0+7 - mqtt_client: ^8.1.0 - photo_view: ^0.13.0 - confetti: ^0.6.0 - flutter_launcher_icons: ^0.8.1 + youtube_player_flutter: ^8.1.1 + mqtt_client: ^9.6.8 + photo_view: ^0.14.0 + confetti: ^0.7.0 + flutter_launcher_icons: ^0.10.0 # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. diff --git a/windows/flutter/generated_plugins.cmake b/windows/flutter/generated_plugins.cmake index 4d10c25..b93c4c3 100644 --- a/windows/flutter/generated_plugins.cmake +++ b/windows/flutter/generated_plugins.cmake @@ -5,6 +5,9 @@ list(APPEND FLUTTER_PLUGIN_LIST ) +list(APPEND FLUTTER_FFI_PLUGIN_LIST +) + set(PLUGIN_BUNDLED_LIBRARIES) foreach(plugin ${FLUTTER_PLUGIN_LIST}) @@ -13,3 +16,8 @@ foreach(plugin ${FLUTTER_PLUGIN_LIST}) list(APPEND PLUGIN_BUNDLED_LIBRARIES $) list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${plugin}_bundled_libraries}) endforeach(plugin) + +foreach(ffi_plugin ${FLUTTER_FFI_PLUGIN_LIST}) + add_subdirectory(flutter/ephemeral/.plugin_symlinks/${ffi_plugin}/windows plugins/${ffi_plugin}) + list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${ffi_plugin}_bundled_libraries}) +endforeach(ffi_plugin)