From a4cd6e023c5a65488e3d1f9e1e4d4e314142b0ce Mon Sep 17 00:00:00 2001 From: Eimji Date: Wed, 8 Jul 2020 00:08:27 +0200 Subject: [PATCH 1/8] Fix icon white line and add shadow for dark theme --- lib/fancy_bottom_navigation.dart | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/lib/fancy_bottom_navigation.dart b/lib/fancy_bottom_navigation.dart index 28d2f35..f56e834 100644 --- a/lib/fancy_bottom_navigation.dart +++ b/lib/fancy_bottom_navigation.dart @@ -56,6 +56,7 @@ class FancyBottomNavigationState extends State Color inactiveIconColor; Color barBackgroundColor; Color textColor; + Color shadowColor; @override void didChangeDependencies() { @@ -90,6 +91,9 @@ class FancyBottomNavigationState extends State ? Colors.white : Theme.of(context).primaryColor : widget.inactiveIconColor; + shadowColor = Theme.of(context).brightness == Brightness.dark + ? Colors.black38 + : Colors.black12; } @override @@ -120,7 +124,7 @@ class FancyBottomNavigationState extends State height: BAR_HEIGHT, decoration: BoxDecoration(color: barBackgroundColor, boxShadow: [ BoxShadow( - color: Colors.black12, offset: Offset(0, -1), blurRadius: 8) + color: shadowColor, offset: Offset(0, -1), blurRadius: 8) ]), child: Row( mainAxisSize: MainAxisSize.max, @@ -172,11 +176,10 @@ class FancyBottomNavigationState extends State width: CIRCLE_SIZE + CIRCLE_OUTLINE, height: CIRCLE_SIZE + CIRCLE_OUTLINE, decoration: BoxDecoration( - color: Colors.white, shape: BoxShape.circle, boxShadow: [ BoxShadow( - color: Colors.black12, + color: shadowColor, blurRadius: 8) ])), ), From 42c7e01c27c0d68148dbc536d3c9eafc64722438 Mon Sep 17 00:00:00 2001 From: Eimji Date: Fri, 25 Sep 2020 22:16:16 +0200 Subject: [PATCH 2/8] Replace deprecated overflow with clipBehavior: Clip.none --- lib/fancy_bottom_navigation.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/fancy_bottom_navigation.dart b/lib/fancy_bottom_navigation.dart index f56e834..6ce227e 100644 --- a/lib/fancy_bottom_navigation.dart +++ b/lib/fancy_bottom_navigation.dart @@ -117,7 +117,7 @@ class FancyBottomNavigationState extends State @override Widget build(BuildContext context) { return Stack( - overflow: Overflow.visible, + clipBehavior: Clip.none, alignment: Alignment.bottomCenter, children: [ Container( From df61062aa3b293125a903ec9e0d44bd7bbfe197e Mon Sep 17 00:00:00 2001 From: Patrick Truong Date: Sun, 21 Nov 2021 18:32:35 +0100 Subject: [PATCH 3/8] Remove clipBehavior --- lib/fancy_bottom_navigation.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/fancy_bottom_navigation.dart b/lib/fancy_bottom_navigation.dart index 63c96c4..22e6101 100644 --- a/lib/fancy_bottom_navigation.dart +++ b/lib/fancy_bottom_navigation.dart @@ -95,7 +95,7 @@ class FancyBottomNavigationState extends State with Ticke @override Widget build(BuildContext context) { return Stack( - clipBehavior: Clip.none, + overflow: Overflow.visible, alignment: Alignment.bottomCenter, children: [ Container( From 2d310fbc1e187c015094fdefa48023b016b4f854 Mon Sep 17 00:00:00 2001 From: Eimji Date: Tue, 26 Apr 2022 11:27:14 +0200 Subject: [PATCH 4/8] Revert clipBehavior ( deprecated overflow) --- lib/fancy_bottom_navigation.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/fancy_bottom_navigation.dart b/lib/fancy_bottom_navigation.dart index 22e6101..63c96c4 100644 --- a/lib/fancy_bottom_navigation.dart +++ b/lib/fancy_bottom_navigation.dart @@ -95,7 +95,7 @@ class FancyBottomNavigationState extends State with Ticke @override Widget build(BuildContext context) { return Stack( - overflow: Overflow.visible, + clipBehavior: Clip.none, alignment: Alignment.bottomCenter, children: [ Container( From 9e042f611aa31bae66bf23c115b58c986fdb6be4 Mon Sep 17 00:00:00 2001 From: Eimji Date: Sun, 1 Oct 2023 19:18:07 +0200 Subject: [PATCH 5/8] Update dependencies & support for Dart 3 --- example/android/app/build.gradle | 48 ++-- .../android/app/src/debug/AndroidManifest.xml | 7 + .../android/app/src/main/AndroidManifest.xml | 39 ++- .../res/drawable-v21/launch_background.xml | 12 + .../app/src/main/res/values-night/styles.xml | 18 ++ .../app/src/main/res/values/styles.xml | 14 +- .../app/src/profile/AndroidManifest.xml | 7 + example/android/build.gradle | 10 +- example/android/gradle.properties | 3 + .../gradle/wrapper/gradle-wrapper.properties | 2 +- example/android/settings.gradle | 27 +- .../ios/Flutter/flutter_export_environment.sh | 10 +- example/lib/main.dart | 32 +-- example/lib/second_page.dart | 8 +- example/pubspec.yaml | 2 +- lib/fancy_bottom_navigation.dart | 73 +++-- lib/paint/half_clipper.dart | 2 +- lib/paint/half_painter.dart | 4 +- pubspec.lock | 265 +++++++++++++++--- pubspec.yaml | 8 +- test/fancy_widget_tests.dart | 13 +- 21 files changed, 426 insertions(+), 178 deletions(-) create mode 100644 example/android/app/src/debug/AndroidManifest.xml create mode 100644 example/android/app/src/main/res/drawable-v21/launch_background.xml create mode 100644 example/android/app/src/main/res/values-night/styles.xml create mode 100644 example/android/app/src/profile/AndroidManifest.xml diff --git a/example/android/app/build.gradle b/example/android/app/build.gradle index 13cf3c9..895f4ca 100644 --- a/example/android/app/build.gradle +++ b/example/android/app/build.gradle @@ -1,3 +1,9 @@ +plugins { + id "com.android.application" + id "kotlin-android" + id "dev.flutter.flutter-gradle-plugin" +} + def localProperties = new Properties() def localPropertiesFile = rootProject.file('local.properties') if (localPropertiesFile.exists()) { @@ -6,11 +12,6 @@ if (localPropertiesFile.exists()) { } } -def flutterRoot = localProperties.getProperty('flutter.sdk') -if (flutterRoot == null) { - throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") -} - def flutterVersionCode = localProperties.getProperty('flutter.versionCode') if (flutterVersionCode == null) { flutterVersionCode = '1' @@ -21,29 +22,33 @@ if (flutterVersionName == null) { flutterVersionName = '1.0' } -apply plugin: 'com.android.application' -apply plugin: 'kotlin-android' -apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" - android { - compileSdkVersion 28 + namespace "com.smartapeth.example" + compileSdkVersion flutter.compileSdkVersion + ndkVersion flutter.ndkVersion - sourceSets { - main.java.srcDirs += 'src/main/kotlin' + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + + kotlinOptions { + jvmTarget = '1.8' } - lintOptions { - disable 'InvalidPackage' + sourceSets { + main.java.srcDirs += 'src/main/kotlin' } defaultConfig { // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). - applicationId "com.smartapeth.example" - minSdkVersion 16 - targetSdkVersion 27 + applicationId "com.example.toto" + // You can update the following values to match your application needs. + // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration. + minSdkVersion flutter.minSdkVersion + targetSdkVersion flutter.targetSdkVersion versionCode flutterVersionCode.toInteger() versionName flutterVersionName - testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } buildTypes { @@ -59,9 +64,4 @@ flutter { source '../..' } -dependencies { - implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" - testImplementation 'junit:junit:4.12' - androidTestImplementation 'com.android.support.test:runner:1.0.2' - androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' -} +dependencies {} diff --git a/example/android/app/src/debug/AndroidManifest.xml b/example/android/app/src/debug/AndroidManifest.xml new file mode 100644 index 0000000..399f698 --- /dev/null +++ b/example/android/app/src/debug/AndroidManifest.xml @@ -0,0 +1,7 @@ + + + + diff --git a/example/android/app/src/main/AndroidManifest.xml b/example/android/app/src/main/AndroidManifest.xml index 811908e..cbb7017 100644 --- a/example/android/app/src/main/AndroidManifest.xml +++ b/example/android/app/src/main/AndroidManifest.xml @@ -1,38 +1,33 @@ - - - - - - + - + + android:name="io.flutter.embedding.android.NormalTheme" + android:resource="@style/NormalTheme" + /> + + diff --git a/example/android/app/src/main/res/drawable-v21/launch_background.xml b/example/android/app/src/main/res/drawable-v21/launch_background.xml new file mode 100644 index 0000000..f74085f --- /dev/null +++ b/example/android/app/src/main/res/drawable-v21/launch_background.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/example/android/app/src/main/res/values-night/styles.xml b/example/android/app/src/main/res/values-night/styles.xml new file mode 100644 index 0000000..06952be --- /dev/null +++ b/example/android/app/src/main/res/values-night/styles.xml @@ -0,0 +1,18 @@ + + + + + + + diff --git a/example/android/app/src/main/res/values/styles.xml b/example/android/app/src/main/res/values/styles.xml index 00fa441..cb1ef88 100644 --- a/example/android/app/src/main/res/values/styles.xml +++ b/example/android/app/src/main/res/values/styles.xml @@ -1,8 +1,18 @@ - + + diff --git a/example/android/app/src/profile/AndroidManifest.xml b/example/android/app/src/profile/AndroidManifest.xml new file mode 100644 index 0000000..399f698 --- /dev/null +++ b/example/android/app/src/profile/AndroidManifest.xml @@ -0,0 +1,7 @@ + + + + diff --git a/example/android/build.gradle b/example/android/build.gradle index b7faad8..fb84b31 100644 --- a/example/android/build.gradle +++ b/example/android/build.gradle @@ -1,12 +1,12 @@ buildscript { - ext.kotlin_version = '1.2.71' + ext.kotlin_version = '1.9.10' repositories { google() - jcenter() + mavenCentral() } dependencies { - classpath 'com.android.tools.build:gradle:3.2.1' + classpath 'com.android.tools.build:gradle:8.1.2' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } @@ -14,7 +14,7 @@ buildscript { allprojects { repositories { google() - jcenter() + mavenCentral() } } @@ -26,6 +26,6 @@ subprojects { project.evaluationDependsOn(':app') } -task clean(type: Delete) { +tasks.register("clean", Delete) { delete rootProject.buildDir } diff --git a/example/android/gradle.properties b/example/android/gradle.properties index 8bd86f6..1eacf12 100644 --- a/example/android/gradle.properties +++ b/example/android/gradle.properties @@ -1 +1,4 @@ org.gradle.jvmargs=-Xmx1536M +android.useAndroidX=true +android.enableJetifier=true +android.debug.obsoleteApi=true diff --git a/example/android/gradle/wrapper/gradle-wrapper.properties b/example/android/gradle/wrapper/gradle-wrapper.properties index 2819f02..e6b38c2 100644 --- a/example/android/gradle/wrapper/gradle-wrapper.properties +++ b/example/android/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.2-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.3-all.zip diff --git a/example/android/settings.gradle b/example/android/settings.gradle index 5a2f14f..55c4ca8 100644 --- a/example/android/settings.gradle +++ b/example/android/settings.gradle @@ -1,15 +1,20 @@ -include ':app' +pluginManagement { + def flutterSdkPath = { + def properties = new Properties() + file("local.properties").withInputStream { properties.load(it) } + def flutterSdkPath = properties.getProperty("flutter.sdk") + assert flutterSdkPath != null, "flutter.sdk not set in local.properties" + return flutterSdkPath + } + settings.ext.flutterSdkPath = flutterSdkPath() -def flutterProjectRoot = rootProject.projectDir.parentFile.toPath() + includeBuild("${settings.ext.flutterSdkPath}/packages/flutter_tools/gradle") -def plugins = new Properties() -def pluginsFile = new File(flutterProjectRoot.toFile(), '.flutter-plugins') -if (pluginsFile.exists()) { - pluginsFile.withReader('UTF-8') { reader -> plugins.load(reader) } + plugins { + id "dev.flutter.flutter-gradle-plugin" version "1.0.0" apply false + } } -plugins.each { name, path -> - def pluginDirectory = flutterProjectRoot.resolve(path).resolve('android').toFile() - include ":$name" - project(":$name").projectDir = pluginDirectory -} +include ":app" + +apply from: "${settings.ext.flutterSdkPath}/packages/flutter_tools/gradle/app_plugin_loader.gradle" diff --git a/example/ios/Flutter/flutter_export_environment.sh b/example/ios/Flutter/flutter_export_environment.sh index 199d84c..805fc1d 100755 --- a/example/ios/Flutter/flutter_export_environment.sh +++ b/example/ios/Flutter/flutter_export_environment.sh @@ -1,13 +1,13 @@ #!/bin/sh # This is a generated file; do not edit or check into version control. -export "FLUTTER_ROOT=/Users/tonyowen/dev/sdk/flutter" -export "FLUTTER_APPLICATION_PATH=/Users/tonyowen/dev/projects/flutter/fancy_bottom_navigation/example" +export "FLUTTER_ROOT=/Users/aurick/Library/flutter" +export "FLUTTER_APPLICATION_PATH=/Users/aurick/DATA/Programmation/Github/fancy_bottom_navigation/example" +export "COCOAPODS_PARALLEL_CODE_SIGN=true" export "FLUTTER_TARGET=lib/main.dart" export "FLUTTER_BUILD_DIR=build" -export "SYMROOT=${SOURCE_ROOT}/../build/ios" export "FLUTTER_BUILD_NAME=1.0.0" export "FLUTTER_BUILD_NUMBER=1" export "DART_OBFUSCATION=false" -export "TRACK_WIDGET_CREATION=false" +export "TRACK_WIDGET_CREATION=true" export "TREE_SHAKE_ICONS=false" -export "PACKAGE_CONFIG=.packages" +export "PACKAGE_CONFIG=.dart_tool/package_config.json" diff --git a/example/lib/main.dart b/example/lib/main.dart index ebefd4d..f8938b4 100644 --- a/example/lib/main.dart +++ b/example/lib/main.dart @@ -79,23 +79,15 @@ class _MyHomePageState extends State { mainAxisSize: MainAxisSize.min, children: [ Text("This is the home page"), - RaisedButton( - child: Text( - "Start new page", - style: TextStyle(color: Colors.white), - ), - color: Theme.of(context).primaryColor, + ElevatedButton( + child: Text("Start new page"), onPressed: () { Navigator.of(context).push( MaterialPageRoute(builder: (context) => SecondPage())); }, ), - RaisedButton( - child: Text( - "Change to page 3", - style: TextStyle(color: Colors.white), - ), - color: Theme.of(context).accentColor, + ElevatedButton( + child: Text("Change to page 3"), onPressed: () { final FancyBottomNavigationState fState = bottomNavigationKey .currentState as FancyBottomNavigationState; @@ -109,12 +101,8 @@ class _MyHomePageState extends State { mainAxisSize: MainAxisSize.min, children: [ Text("This is the search page"), - RaisedButton( - child: Text( - "Start new page", - style: TextStyle(color: Colors.white), - ), - color: Theme.of(context).primaryColor, + ElevatedButton( + child: Text("Start new page"), onPressed: () { Navigator.of(context).push( MaterialPageRoute(builder: (context) => SecondPage())); @@ -127,12 +115,8 @@ class _MyHomePageState extends State { mainAxisSize: MainAxisSize.min, children: [ Text("This is the basket page"), - RaisedButton( - child: Text( - "Start new page", - style: TextStyle(color: Colors.white), - ), - color: Theme.of(context).primaryColor, + ElevatedButton( + child: Text("Start new page"), onPressed: () {}, ) ], diff --git a/example/lib/second_page.dart b/example/lib/second_page.dart index 0c55148..dbd0b5f 100644 --- a/example/lib/second_page.dart +++ b/example/lib/second_page.dart @@ -9,8 +9,12 @@ class _SecondPageState extends State { @override Widget build(BuildContext context) { return Scaffold( - appBar: AppBar(title: Text("Second page"),), - body: Center(child: Text("Nothing to see here"),), + appBar: AppBar( + title: Text("Second page"), + ), + body: Center( + child: Text("Nothing to see here"), + ), ); } } diff --git a/example/pubspec.yaml b/example/pubspec.yaml index 0394863..64e31fd 100644 --- a/example/pubspec.yaml +++ b/example/pubspec.yaml @@ -4,7 +4,7 @@ description: A new Flutter application. version: 1.0.0+1 environment: - sdk: ">=2.0.0-dev.68.0 <3.0.0" + sdk: ">=2.12.0 <4.0.0" dependencies: flutter: diff --git a/lib/fancy_bottom_navigation.dart b/lib/fancy_bottom_navigation.dart index 22e6101..7ffd8f9 100644 --- a/lib/fancy_bottom_navigation.dart +++ b/lib/fancy_bottom_navigation.dart @@ -23,9 +23,7 @@ class FancyBottomNavigation extends StatefulWidget { this.inactiveIconColor, this.textColor, this.barBackgroundColor}) - : assert(onTabChangedListener != null), - assert(tabs != null), - assert(tabs.length > 1 && tabs.length < 5); + : assert(tabs.length > 1 && tabs.length < 5); final Function(int position) onTabChangedListener; final Color? circleColor; @@ -42,7 +40,8 @@ class FancyBottomNavigation extends StatefulWidget { FancyBottomNavigationState createState() => FancyBottomNavigationState(); } -class FancyBottomNavigationState extends State with TickerProviderStateMixin, RouteAware { +class FancyBottomNavigationState extends State + with TickerProviderStateMixin, RouteAware { IconData nextIcon = Icons.search; IconData activeIcon = Icons.search; @@ -63,15 +62,31 @@ class FancyBottomNavigationState extends State with Ticke activeIcon = widget.tabs[currentSelected].iconData; - circleColor = widget.circleColor ?? ((Theme.of(context).brightness == Brightness.dark) ? Colors.white : Theme.of(context).primaryColor); - - activeIconColor = widget.activeIconColor ?? ((Theme.of(context).brightness == Brightness.dark) ? Colors.black54 : Colors.white); - - barBackgroundColor = widget.barBackgroundColor ?? ((Theme.of(context).brightness == Brightness.dark) ? Color(0xFF212121) : Colors.white); - textColor = widget.textColor ?? ((Theme.of(context).brightness == Brightness.dark) ? Colors.white : Colors.black54); - inactiveIconColor = - (widget.inactiveIconColor) ?? ((Theme.of(context).brightness == Brightness.dark) ? Colors.white : Theme.of(context).primaryColor); - shadowColor = Theme.of(context).brightness == Brightness.dark ? Colors.black38 : Colors.black12; + circleColor = widget.circleColor ?? + ((Theme.of(context).brightness == Brightness.dark) + ? Colors.white + : Theme.of(context).primaryColor); + + activeIconColor = widget.activeIconColor ?? + ((Theme.of(context).brightness == Brightness.dark) + ? Colors.black54 + : Colors.white); + + barBackgroundColor = widget.barBackgroundColor ?? + ((Theme.of(context).brightness == Brightness.dark) + ? Color(0xFF212121) + : Colors.white); + textColor = widget.textColor ?? + ((Theme.of(context).brightness == Brightness.dark) + ? Colors.white + : Colors.black54); + inactiveIconColor = (widget.inactiveIconColor) ?? + ((Theme.of(context).brightness == Brightness.dark) + ? Colors.white + : Theme.of(context).primaryColor); + shadowColor = Theme.of(context).brightness == Brightness.dark + ? Colors.black38 + : Colors.black12; } @override @@ -95,12 +110,14 @@ class FancyBottomNavigationState extends State with Ticke @override Widget build(BuildContext context) { return Stack( - overflow: Overflow.visible, + clipBehavior: Clip.none, alignment: Alignment.bottomCenter, children: [ Container( height: BAR_HEIGHT, - decoration: BoxDecoration(color: barBackgroundColor, boxShadow: [BoxShadow(color: shadowColor, offset: Offset(0, -1), blurRadius: 8)]), + decoration: BoxDecoration(color: barBackgroundColor, boxShadow: [ + BoxShadow(color: shadowColor, offset: Offset(0, -1), blurRadius: 8) + ]), child: Row( mainAxisSize: MainAxisSize.max, crossAxisAlignment: CrossAxisAlignment.center, @@ -113,7 +130,8 @@ class FancyBottomNavigationState extends State with Ticke iconColor: inactiveIconColor, textColor: textColor, callbackFunction: (uniqueKey) { - int selected = widget.tabs.indexWhere((tabData) => tabData.key == uniqueKey); + int selected = widget.tabs + .indexWhere((tabData) => tabData.key == uniqueKey); widget.onTabChangedListener(selected); _setSelected(uniqueKey); _initAnimationAndStart(_circleAlignX, 1); @@ -133,13 +151,16 @@ class FancyBottomNavigationState extends State with Ticke child: FractionallySizedBox( widthFactor: 1 / widget.tabs.length, child: GestureDetector( - onTap: widget.tabs[currentSelected].onclick as void Function()?, + onTap: widget.tabs[currentSelected].onclick as void + Function()?, child: Stack( alignment: Alignment.center, children: [ SizedBox( - height: CIRCLE_SIZE + CIRCLE_OUTLINE + SHADOW_ALLOWANCE, - width: CIRCLE_SIZE + CIRCLE_OUTLINE + SHADOW_ALLOWANCE, + height: + CIRCLE_SIZE + CIRCLE_OUTLINE + SHADOW_ALLOWANCE, + width: + CIRCLE_SIZE + CIRCLE_OUTLINE + SHADOW_ALLOWANCE, child: ClipRect( clipper: HalfClipper(), child: Container( @@ -147,7 +168,13 @@ class FancyBottomNavigationState extends State with Ticke child: Container( width: CIRCLE_SIZE + CIRCLE_OUTLINE, height: CIRCLE_SIZE + CIRCLE_OUTLINE, - decoration: BoxDecoration(shape: BoxShape.circle, boxShadow: [BoxShadow(color: shadowColor, blurRadius: 8)])), + decoration: BoxDecoration( + shape: BoxShape.circle, + boxShadow: [ + BoxShadow( + color: shadowColor, + blurRadius: 8) + ])), ), )), ), @@ -161,11 +188,13 @@ class FancyBottomNavigationState extends State with Ticke height: CIRCLE_SIZE, width: CIRCLE_SIZE, child: Container( - decoration: BoxDecoration(shape: BoxShape.circle, color: circleColor), + decoration: BoxDecoration( + shape: BoxShape.circle, color: circleColor), child: Padding( padding: const EdgeInsets.all(0.0), child: AnimatedOpacity( - duration: Duration(milliseconds: ANIM_DURATION ~/ 5), + duration: + Duration(milliseconds: ANIM_DURATION ~/ 5), opacity: _circleIconAlpha, child: Icon( activeIcon, diff --git a/lib/paint/half_clipper.dart b/lib/paint/half_clipper.dart index 731ef59..5f3f40d 100644 --- a/lib/paint/half_clipper.dart +++ b/lib/paint/half_clipper.dart @@ -11,4 +11,4 @@ class HalfClipper extends CustomClipper { bool shouldReclip(CustomClipper oldClipper) { return true; } -} \ No newline at end of file +} diff --git a/lib/paint/half_painter.dart b/lib/paint/half_painter.dart index 6d3f37a..adcf75f 100644 --- a/lib/paint/half_painter.dart +++ b/lib/paint/half_painter.dart @@ -13,7 +13,7 @@ class HalfPainter extends CustomPainter { final Rect beforeRect = Rect.fromLTWH(0, (size.height / 2) - 10, 10, 10); final Rect largeRect = Rect.fromLTWH(10, 0, size.width - 20, 70); final Rect afterRect = - Rect.fromLTWH(size.width - 10, (size.height / 2) - 10, 10, 10); + Rect.fromLTWH(size.width - 10, (size.height / 2) - 10, 10, 10); final path = Path(); path.arcTo(beforeRect, radians(0), radians(90), false); @@ -31,4 +31,4 @@ class HalfPainter extends CustomPainter { bool shouldRepaint(CustomPainter oldDelegate) { return true; } -} \ No newline at end of file +} diff --git a/pubspec.lock b/pubspec.lock index 4184453..be371af 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -1,55 +1,150 @@ # Generated by pub # See https://dart.dev/tools/pub/glossary#lockfile packages: + _fe_analyzer_shared: + dependency: transitive + description: + name: _fe_analyzer_shared + sha256: ae92f5d747aee634b87f89d9946000c2de774be1d6ac3e58268224348cd0101a + url: "https://pub.dev" + source: hosted + version: "61.0.0" + analyzer: + dependency: transitive + description: + name: analyzer + sha256: ea3d8652bda62982addfd92fdc2d0214e5f82e43325104990d4f4c4a2a313562 + url: "https://pub.dev" + source: hosted + version: "5.13.0" + args: + dependency: transitive + description: + name: args + sha256: eef6c46b622e0494a36c5a12d10d77fb4e855501a91c1b9ef9339326e58f0596 + url: "https://pub.dev" + source: hosted + version: "2.4.2" async: dependency: transitive description: name: async - url: "https://pub.dartlang.org" + sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" + url: "https://pub.dev" source: hosted - version: "2.5.0" + version: "2.11.0" boolean_selector: dependency: transitive description: name: boolean_selector - url: "https://pub.dartlang.org" + sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" + url: "https://pub.dev" source: hosted - version: "2.1.0" - characters: + version: "2.1.1" + build: dependency: transitive description: - name: characters - url: "https://pub.dartlang.org" + name: build + sha256: "80184af8b6cb3e5c1c4ec6d8544d27711700bc3e6d2efad04238c7b5290889f0" + url: "https://pub.dev" source: hosted - version: "1.1.0" - charcode: + version: "2.4.1" + built_collection: dependency: transitive description: - name: charcode - url: "https://pub.dartlang.org" + name: built_collection + sha256: "376e3dd27b51ea877c28d525560790aee2e6fbb5f20e2f85d5081027d94e2100" + url: "https://pub.dev" source: hosted - version: "1.2.0" + version: "5.1.1" + built_value: + dependency: transitive + description: + name: built_value + sha256: a8de5955205b4d1dbbbc267daddf2178bd737e4bab8987c04a500478c9651e74 + url: "https://pub.dev" + source: hosted + version: "8.6.3" + characters: + dependency: transitive + description: + name: characters + sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" + url: "https://pub.dev" + source: hosted + version: "1.3.0" clock: dependency: transitive description: name: clock - url: "https://pub.dartlang.org" + sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf + url: "https://pub.dev" source: hosted - version: "1.1.0" + version: "1.1.1" + code_builder: + dependency: transitive + description: + name: code_builder + sha256: "1be9be30396d7e4c0db42c35ea6ccd7cc6a1e19916b5dc64d6ac216b5544d677" + url: "https://pub.dev" + source: hosted + version: "4.7.0" collection: dependency: transitive description: name: collection - url: "https://pub.dartlang.org" + sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a + url: "https://pub.dev" source: hosted - version: "1.15.0" + version: "1.18.0" + convert: + dependency: transitive + description: + name: convert + sha256: "0f08b14755d163f6e2134cb58222dd25ea2a2ee8a195e53983d57c075324d592" + url: "https://pub.dev" + source: hosted + version: "3.1.1" + crypto: + dependency: transitive + description: + name: crypto + sha256: ff625774173754681d66daaf4a448684fb04b78f902da9cb3d308c19cc5e8bab + url: "https://pub.dev" + source: hosted + version: "3.0.3" + dart_style: + dependency: transitive + description: + name: dart_style + sha256: "1efa911ca7086affd35f463ca2fc1799584fb6aa89883cf0af8e3664d6a02d55" + url: "https://pub.dev" + source: hosted + version: "2.3.2" fake_async: dependency: transitive description: name: fake_async - url: "https://pub.dartlang.org" + sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78" + url: "https://pub.dev" source: hosted - version: "1.2.0" + version: "1.3.1" + file: + dependency: transitive + description: + name: file + sha256: "5fc22d7c25582e38ad9a8515372cd9a93834027aacf1801cf01164dac0ffa08c" + url: "https://pub.dev" + source: hosted + version: "7.0.0" + fixnum: + dependency: transitive + description: + name: fixnum + sha256: "25517a4deb0c03aa0f32fd12db525856438902d9c16536311e76cdc57b31d7d1" + url: "https://pub.dev" + source: hosted + version: "1.1.0" flutter: dependency: "direct main" description: flutter @@ -60,94 +155,178 @@ packages: description: flutter source: sdk version: "0.0.0" + glob: + dependency: transitive + description: + name: glob + sha256: "0e7014b3b7d4dac1ca4d6114f82bf1782ee86745b9b42a92c9289c23d8a0ab63" + url: "https://pub.dev" + source: hosted + version: "2.1.2" + logging: + dependency: transitive + description: + name: logging + sha256: "623a88c9594aa774443aa3eb2d41807a48486b5613e67599fb4c41c0ad47c340" + url: "https://pub.dev" + source: hosted + version: "1.2.0" matcher: dependency: transitive description: name: matcher - url: "https://pub.dartlang.org" + sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e" + url: "https://pub.dev" source: hosted - version: "0.12.10" + version: "0.12.16" + material_color_utilities: + dependency: transitive + description: + name: material_color_utilities + sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41" + url: "https://pub.dev" + source: hosted + version: "0.5.0" meta: dependency: transitive description: name: meta - url: "https://pub.dartlang.org" + sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3" + url: "https://pub.dev" source: hosted - version: "1.3.0" + version: "1.9.1" mockito: dependency: "direct dev" description: name: mockito - url: "https://pub.dartlang.org" + sha256: "7d5b53bcd556c1bc7ffbe4e4d5a19c3e112b7e925e9e172dd7c6ad0630812616" + url: "https://pub.dev" + source: hosted + version: "5.4.2" + package_config: + dependency: transitive + description: + name: package_config + sha256: "1c5b77ccc91e4823a5af61ee74e6b972db1ef98c2ff5a18d3161c982a55448bd" + url: "https://pub.dev" source: hosted - version: "4.0.0" + version: "2.1.0" path: dependency: transitive description: name: path - url: "https://pub.dartlang.org" + sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917" + url: "https://pub.dev" source: hosted - version: "1.8.0" + version: "1.8.3" + pub_semver: + dependency: transitive + description: + name: pub_semver + sha256: "40d3ab1bbd474c4c2328c91e3a7df8c6dd629b79ece4c4bd04bee496a224fb0c" + url: "https://pub.dev" + source: hosted + version: "2.1.4" sky_engine: dependency: transitive description: flutter source: sdk version: "0.0.99" + source_gen: + dependency: transitive + description: + name: source_gen + sha256: fc0da689e5302edb6177fdd964efcb7f58912f43c28c2047a808f5bfff643d16 + url: "https://pub.dev" + source: hosted + version: "1.4.0" source_span: dependency: transitive description: name: source_span - url: "https://pub.dartlang.org" + sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" + url: "https://pub.dev" source: hosted - version: "1.8.0" + version: "1.10.0" stack_trace: dependency: transitive description: name: stack_trace - url: "https://pub.dartlang.org" + sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b" + url: "https://pub.dev" source: hosted - version: "1.10.0" + version: "1.11.1" stream_channel: dependency: transitive description: name: stream_channel - url: "https://pub.dartlang.org" + sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7 + url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.2" string_scanner: dependency: transitive description: name: string_scanner - url: "https://pub.dartlang.org" + sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde" + url: "https://pub.dev" source: hosted - version: "1.1.0" + version: "1.2.0" term_glyph: dependency: transitive description: name: term_glyph - url: "https://pub.dartlang.org" + sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 + url: "https://pub.dev" source: hosted - version: "1.2.0" + version: "1.2.1" test_api: dependency: transitive description: name: test_api - url: "https://pub.dartlang.org" + sha256: "5c2f730018264d276c20e4f1503fd1308dfbbae39ec8ee63c5236311ac06954b" + url: "https://pub.dev" source: hosted - version: "0.2.19" + version: "0.6.1" typed_data: dependency: transitive description: name: typed_data - url: "https://pub.dartlang.org" + sha256: facc8d6582f16042dd49f2463ff1bd6e2c9ef9f3d5da3d9b087e244a7b564b3c + url: "https://pub.dev" source: hosted - version: "1.3.0" + version: "1.3.2" vector_math: dependency: "direct main" description: name: vector_math - url: "https://pub.dartlang.org" + sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" + url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.4" + watcher: + dependency: transitive + description: + name: watcher + sha256: "3d2ad6751b3c16cf07c7fca317a1413b3f26530319181b37e3b9039b84fc01d8" + url: "https://pub.dev" + source: hosted + version: "1.1.0" + web: + dependency: transitive + description: + name: web + sha256: dc8ccd225a2005c1be616fe02951e2e342092edf968cf0844220383757ef8f10 + url: "https://pub.dev" + source: hosted + version: "0.1.4-beta" + yaml: + dependency: transitive + description: + name: yaml + sha256: "75769501ea3489fca56601ff33454fe45507ea3bfb014161abc3b43ae25989d5" + url: "https://pub.dev" + source: hosted + version: "3.1.2" sdks: - dart: ">=2.12.0 <3.0.0" + dart: ">=3.1.0-185.0.dev <4.0.0" diff --git a/pubspec.yaml b/pubspec.yaml index 5e6d623..3dc7a9c 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,21 +1,21 @@ name: fancy_bottom_navigation description: An animated Bottom Navigation Bar for Flutter apps, icon animates into place, colors are customisable.. -version: 0.3.3 +version: 0.4.0 author: Smart Apeth homepage: https://github.com/tunitowen/fancy_bottom_navigation environment: - sdk: '>=2.12.0 <3.0.0' + sdk: '>=2.12.0 <4.0.0' dependencies: flutter: sdk: flutter - vector_math: ^2.0.8 + vector_math: ^2.1.4 dev_dependencies: flutter_test: sdk: flutter - mockito: ^4.0.0 + mockito: ^5.4.2 # For information on the generic Dart part of this file, see the # following page: https://www.dartlang.org/tools/pub/pubspec diff --git a/test/fancy_widget_tests.dart b/test/fancy_widget_tests.dart index 847027a..1b12e5b 100644 --- a/test/fancy_widget_tests.dart +++ b/test/fancy_widget_tests.dart @@ -5,11 +5,9 @@ import 'package:flutter_test/flutter_test.dart'; void main() { Widget makeTestableWidget({required Widget child}) { return MaterialApp( - theme: ThemeData(primaryColor: Colors.pink, - brightness: Brightness.light), - home: Scaffold( - body: Center(), - bottomNavigationBar: child)); + theme: + ThemeData(primaryColor: Colors.pink, brightness: Brightness.light), + home: Scaffold(body: Center(), bottomNavigationBar: child)); } testWidgets('Fancy Nav has correct tabs', (WidgetTester tester) async { @@ -37,7 +35,6 @@ void main() { final randomFinder = find.text("Hello"); expect(randomFinder, findsNothing); - }); testWidgets('Clicking icon moves the circle', (WidgetTester tester) async { @@ -68,7 +65,5 @@ void main() { expect(searchIconFinder, findsNWidgets(2)); expect(homeIconFinder, findsOneWidget); - }); - -} \ No newline at end of file +} From ccb6a1ec58b1c02042b3a7f81ce7c1006e945523 Mon Sep 17 00:00:00 2001 From: Eimji Date: Sun, 26 Nov 2023 11:25:57 +0100 Subject: [PATCH 6/8] Add accessibility support for tab items --- lib/internal/tab_item.dart | 1 + pubspec.lock | 78 ++++++++++++++++++++++++++++---------- pubspec.yaml | 2 +- 3 files changed, 61 insertions(+), 20 deletions(-) diff --git a/lib/internal/tab_item.dart b/lib/internal/tab_item.dart index 3f26b1d..f8bb91a 100644 --- a/lib/internal/tab_item.dart +++ b/lib/internal/tab_item.dart @@ -72,6 +72,7 @@ class TabItem extends StatelessWidget { iconData, color: iconColor, ), + tooltip: title, onPressed: () { callbackFunction(uniqueKey); }, diff --git a/pubspec.lock b/pubspec.lock index be371af..f79ad13 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -5,18 +5,18 @@ packages: dependency: transitive description: name: _fe_analyzer_shared - sha256: ae92f5d747aee634b87f89d9946000c2de774be1d6ac3e58268224348cd0101a + sha256: "36a321c3d2cbe01cbcb3540a87b8843846e0206df3e691fa7b23e19e78de6d49" url: "https://pub.dev" source: hosted - version: "61.0.0" + version: "65.0.0" analyzer: dependency: transitive description: name: analyzer - sha256: ea3d8652bda62982addfd92fdc2d0214e5f82e43325104990d4f4c4a2a313562 + sha256: dfe03b90ec022450e22513b5e5ca1f01c0c01de9c3fba2f7fd233cb57a6b9a07 url: "https://pub.dev" source: hosted - version: "5.13.0" + version: "6.3.0" args: dependency: transitive description: @@ -61,10 +61,10 @@ packages: dependency: transitive description: name: built_value - sha256: a8de5955205b4d1dbbbc267daddf2178bd737e4bab8987c04a500478c9651e74 + sha256: "69acb7007eb2a31dc901512bfe0f7b767168be34cb734835d54c070bfa74c1b2" url: "https://pub.dev" source: hosted - version: "8.6.3" + version: "8.8.0" characters: dependency: transitive description: @@ -85,10 +85,10 @@ packages: dependency: transitive description: name: code_builder - sha256: "1be9be30396d7e4c0db42c35ea6ccd7cc6a1e19916b5dc64d6ac216b5544d677" + sha256: b2151ce26a06171005b379ecff6e08d34c470180ffe16b8e14b6d52be292b55f url: "https://pub.dev" source: hosted - version: "4.7.0" + version: "4.8.0" collection: dependency: transitive description: @@ -117,10 +117,10 @@ packages: dependency: transitive description: name: dart_style - sha256: "1efa911ca7086affd35f463ca2fc1799584fb6aa89883cf0af8e3664d6a02d55" + sha256: "40ae61a5d43feea6d24bd22c0537a6629db858963b99b4bc1c3db80676f32368" url: "https://pub.dev" source: hosted - version: "2.3.2" + version: "2.3.4" fake_async: dependency: transitive description: @@ -163,6 +163,30 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.2" + intl: + dependency: transitive + description: + name: intl + sha256: "3bc132a9dbce73a7e4a21a17d06e1878839ffbf975568bc875c60537824b0c4d" + url: "https://pub.dev" + source: hosted + version: "0.18.1" + leak_tracker: + dependency: transitive + description: + name: leak_tracker + sha256: "7e108028e3d258667d079986da8c0bc32da4cb57431c2af03b1dc1038621a9dc" + url: "https://pub.dev" + source: hosted + version: "9.0.13" + leak_tracker_testing: + dependency: transitive + description: + name: leak_tracker_testing + sha256: b06739349ec2477e943055aea30172c5c7000225f79dad4702e2ec0eda79a6ff + url: "https://pub.dev" + source: hosted + version: "1.0.5" logging: dependency: transitive description: @@ -183,26 +207,26 @@ packages: dependency: transitive description: name: material_color_utilities - sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41" + sha256: "0e0a020085b65b6083975e499759762399b4475f766c21668c4ecca34ea74e5a" url: "https://pub.dev" source: hosted - version: "0.5.0" + version: "0.8.0" meta: dependency: transitive description: name: meta - sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3" + sha256: d584fa6707a52763a52446f02cc621b077888fb63b93bbcb1143a7be5a0c0c04 url: "https://pub.dev" source: hosted - version: "1.9.1" + version: "1.11.0" mockito: dependency: "direct dev" description: name: mockito - sha256: "7d5b53bcd556c1bc7ffbe4e4d5a19c3e112b7e925e9e172dd7c6ad0630812616" + sha256: "4b693867cee1853c9d1d7ecc1871f27f39b2ef2c13c0d8d8507dfe5bebd8aaf1" url: "https://pub.dev" source: hosted - version: "5.4.2" + version: "5.4.3" package_config: dependency: transitive description: @@ -304,6 +328,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.4" + vm_service: + dependency: transitive + description: + name: vm_service + sha256: b3d56ff4341b8f182b96aceb2fa20e3dcb336b9f867bc0eafc0de10f1048e957 + url: "https://pub.dev" + source: hosted + version: "13.0.0" watcher: dependency: transitive description: @@ -316,10 +348,18 @@ packages: dependency: transitive description: name: web - sha256: dc8ccd225a2005c1be616fe02951e2e342092edf968cf0844220383757ef8f10 + sha256: afe077240a270dcfd2aafe77602b4113645af95d0ad31128cc02bce5ac5d5152 + url: "https://pub.dev" + source: hosted + version: "0.3.0" + web_socket_channel: + dependency: transitive + description: + name: web_socket_channel + sha256: d88238e5eac9a42bb43ca4e721edba3c08c6354d4a53063afaa568516217621b url: "https://pub.dev" source: hosted - version: "0.1.4-beta" + version: "2.4.0" yaml: dependency: transitive description: @@ -329,4 +369,4 @@ packages: source: hosted version: "3.1.2" sdks: - dart: ">=3.1.0-185.0.dev <4.0.0" + dart: ">=3.2.0-194.0.dev <4.0.0" diff --git a/pubspec.yaml b/pubspec.yaml index 3dc7a9c..0cc0901 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -15,7 +15,7 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - mockito: ^5.4.2 + mockito: ^5.4.3 # For information on the generic Dart part of this file, see the # following page: https://www.dartlang.org/tools/pub/pubspec From b3f0888dfe54f3629fe8fbdbf584498efedb8f61 Mon Sep 17 00:00:00 2001 From: Eimji Date: Fri, 1 Dec 2023 17:20:04 +0100 Subject: [PATCH 7/8] Add semanticLabel option for accessibility --- lib/fancy_bottom_navigation.dart | 9 ++++++++- lib/internal/tab_item.dart | 20 ++++++++++++-------- 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/lib/fancy_bottom_navigation.dart b/lib/fancy_bottom_navigation.dart index 7ffd8f9..0b224c1 100644 --- a/lib/fancy_bottom_navigation.dart +++ b/lib/fancy_bottom_navigation.dart @@ -129,6 +129,7 @@ class FancyBottomNavigationState extends State title: t.title, iconColor: inactiveIconColor, textColor: textColor, + semanticLabel: t.semanticLabel, callbackFunction: (uniqueKey) { int selected = widget.tabs .indexWhere((tabData) => tabData.key == uniqueKey); @@ -244,10 +245,16 @@ class FancyBottomNavigationState extends State } class TabData { - TabData({required this.iconData, required this.title, this.onclick}); + TabData({ + required this.iconData, + required this.title, + this.semanticLabel, + this.onclick, + }); IconData iconData; String title; Function? onclick; + String? semanticLabel; final UniqueKey key = UniqueKey(); } diff --git a/lib/internal/tab_item.dart b/lib/internal/tab_item.dart index f8bb91a..4a4adcc 100644 --- a/lib/internal/tab_item.dart +++ b/lib/internal/tab_item.dart @@ -9,14 +9,16 @@ const double ALPHA_ON = 1; const int ANIM_DURATION = 300; class TabItem extends StatelessWidget { - TabItem( - {required this.uniqueKey, - required this.selected, - required this.iconData, - required this.title, - required this.callbackFunction, - required this.textColor, - required this.iconColor}); + TabItem({ + required this.uniqueKey, + required this.selected, + required this.iconData, + required this.title, + required this.callbackFunction, + required this.textColor, + required this.iconColor, + this.semanticLabel, + }); final UniqueKey uniqueKey; final String title; @@ -25,6 +27,7 @@ class TabItem extends StatelessWidget { final Function(UniqueKey uniqueKey) callbackFunction; final Color textColor; final Color iconColor; + final String? semanticLabel; final double iconYAlign = ICON_ON; final double textYAlign = TEXT_OFF; @@ -71,6 +74,7 @@ class TabItem extends StatelessWidget { icon: Icon( iconData, color: iconColor, + semanticLabel: semanticLabel, ), tooltip: title, onPressed: () { From 27c3955993ad20eb7cdb0be906b6ab3bae3b20c5 Mon Sep 17 00:00:00 2001 From: Eimji Date: Sun, 13 Oct 2024 22:51:21 +0200 Subject: [PATCH 8/8] Update dependencies --- pubspec.lock | 126 +++++++++++++++++++++++++-------------------------- pubspec.yaml | 2 +- 2 files changed, 63 insertions(+), 65 deletions(-) diff --git a/pubspec.lock b/pubspec.lock index f79ad13..4b008e1 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -5,26 +5,31 @@ packages: dependency: transitive description: name: _fe_analyzer_shared - sha256: "36a321c3d2cbe01cbcb3540a87b8843846e0206df3e691fa7b23e19e78de6d49" + sha256: "45cfa8471b89fb6643fe9bf51bd7931a76b8f5ec2d65de4fb176dba8d4f22c77" url: "https://pub.dev" source: hosted - version: "65.0.0" + version: "73.0.0" + _macros: + dependency: transitive + description: dart + source: sdk + version: "0.3.2" analyzer: dependency: transitive description: name: analyzer - sha256: dfe03b90ec022450e22513b5e5ca1f01c0c01de9c3fba2f7fd233cb57a6b9a07 + sha256: "4959fec185fe70cce007c57e9ab6983101dbe593d2bf8bbfb4453aaec0cf470a" url: "https://pub.dev" source: hosted - version: "6.3.0" + version: "6.8.0" args: dependency: transitive description: name: args - sha256: eef6c46b622e0494a36c5a12d10d77fb4e855501a91c1b9ef9339326e58f0596 + sha256: "7cf60b9f0cc88203c5a190b4cd62a99feea42759a7fa695010eb5de1c0b2252a" url: "https://pub.dev" source: hosted - version: "2.4.2" + version: "2.5.0" async: dependency: transitive description: @@ -61,10 +66,10 @@ packages: dependency: transitive description: name: built_value - sha256: "69acb7007eb2a31dc901512bfe0f7b767168be34cb734835d54c070bfa74c1b2" + sha256: c7913a9737ee4007efedaffc968c049fd0f3d0e49109e778edc10de9426005cb url: "https://pub.dev" source: hosted - version: "8.8.0" + version: "8.9.2" characters: dependency: transitive description: @@ -85,18 +90,18 @@ packages: dependency: transitive description: name: code_builder - sha256: b2151ce26a06171005b379ecff6e08d34c470180ffe16b8e14b6d52be292b55f + sha256: f692079e25e7869c14132d39f223f8eec9830eb76131925143b2129c4bb01b37 url: "https://pub.dev" source: hosted - version: "4.8.0" + version: "4.10.0" collection: dependency: transitive description: name: collection - sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a + sha256: a1ace0a119f20aabc852d165077c036cd864315bd99b7eaa10a60100341941bf url: "https://pub.dev" source: hosted - version: "1.18.0" + version: "1.19.0" convert: dependency: transitive description: @@ -109,18 +114,18 @@ packages: dependency: transitive description: name: crypto - sha256: ff625774173754681d66daaf4a448684fb04b78f902da9cb3d308c19cc5e8bab + sha256: ec30d999af904f33454ba22ed9a86162b35e52b44ac4807d1d93c288041d7d27 url: "https://pub.dev" source: hosted - version: "3.0.3" + version: "3.0.5" dart_style: dependency: transitive description: name: dart_style - sha256: "40ae61a5d43feea6d24bd22c0537a6629db858963b99b4bc1c3db80676f32368" + sha256: "7856d364b589d1f08986e140938578ed36ed948581fbc3bc9aef1805039ac5ab" url: "https://pub.dev" source: hosted - version: "2.3.4" + version: "2.3.7" fake_async: dependency: transitive description: @@ -133,10 +138,10 @@ packages: dependency: transitive description: name: file - sha256: "5fc22d7c25582e38ad9a8515372cd9a93834027aacf1801cf01164dac0ffa08c" + sha256: a3b4f84adafef897088c160faf7dfffb7696046cb13ae90b508c2cbc95d3b8d4 url: "https://pub.dev" source: hosted - version: "7.0.0" + version: "7.0.1" fixnum: dependency: transitive description: @@ -163,30 +168,30 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.2" - intl: + leak_tracker: dependency: transitive description: - name: intl - sha256: "3bc132a9dbce73a7e4a21a17d06e1878839ffbf975568bc875c60537824b0c4d" + name: leak_tracker + sha256: "7bb2830ebd849694d1ec25bf1f44582d6ac531a57a365a803a6034ff751d2d06" url: "https://pub.dev" source: hosted - version: "0.18.1" - leak_tracker: + version: "10.0.7" + leak_tracker_flutter_testing: dependency: transitive description: - name: leak_tracker - sha256: "7e108028e3d258667d079986da8c0bc32da4cb57431c2af03b1dc1038621a9dc" + name: leak_tracker_flutter_testing + sha256: "9491a714cca3667b60b5c420da8217e6de0d1ba7a5ec322fab01758f6998f379" url: "https://pub.dev" source: hosted - version: "9.0.13" + version: "3.0.8" leak_tracker_testing: dependency: transitive description: name: leak_tracker_testing - sha256: b06739349ec2477e943055aea30172c5c7000225f79dad4702e2ec0eda79a6ff + sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3" url: "https://pub.dev" source: hosted - version: "1.0.5" + version: "3.0.1" logging: dependency: transitive description: @@ -195,38 +200,46 @@ packages: url: "https://pub.dev" source: hosted version: "1.2.0" + macros: + dependency: transitive + description: + name: macros + sha256: "0acaed5d6b7eab89f63350bccd82119e6c602df0f391260d0e32b5e23db79536" + url: "https://pub.dev" + source: hosted + version: "0.1.2-main.4" matcher: dependency: transitive description: name: matcher - sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e" + sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb url: "https://pub.dev" source: hosted - version: "0.12.16" + version: "0.12.16+1" material_color_utilities: dependency: transitive description: name: material_color_utilities - sha256: "0e0a020085b65b6083975e499759762399b4475f766c21668c4ecca34ea74e5a" + sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec url: "https://pub.dev" source: hosted - version: "0.8.0" + version: "0.11.1" meta: dependency: transitive description: name: meta - sha256: d584fa6707a52763a52446f02cc621b077888fb63b93bbcb1143a7be5a0c0c04 + sha256: bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7 url: "https://pub.dev" source: hosted - version: "1.11.0" + version: "1.15.0" mockito: dependency: "direct dev" description: name: mockito - sha256: "4b693867cee1853c9d1d7ecc1871f27f39b2ef2c13c0d8d8507dfe5bebd8aaf1" + sha256: "6841eed20a7befac0ce07df8116c8b8233ed1f4486a7647c7fc5a02ae6163917" url: "https://pub.dev" source: hosted - version: "5.4.3" + version: "5.4.4" package_config: dependency: transitive description: @@ -239,10 +252,10 @@ packages: dependency: transitive description: name: path - sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917" + sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af" url: "https://pub.dev" source: hosted - version: "1.8.3" + version: "1.9.0" pub_semver: dependency: transitive description: @@ -255,15 +268,15 @@ packages: dependency: transitive description: flutter source: sdk - version: "0.0.99" + version: "0.0.0" source_gen: dependency: transitive description: name: source_gen - sha256: fc0da689e5302edb6177fdd964efcb7f58912f43c28c2047a808f5bfff643d16 + sha256: "14658ba5f669685cd3d63701d01b31ea748310f7ab854e471962670abcf57832" url: "https://pub.dev" source: hosted - version: "1.4.0" + version: "1.5.0" source_span: dependency: transitive description: @@ -292,10 +305,10 @@ packages: dependency: transitive description: name: string_scanner - sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde" + sha256: "688af5ed3402a4bde5b3a6c15fd768dbf2621a614950b17f04626c431ab3c4c3" url: "https://pub.dev" source: hosted - version: "1.2.0" + version: "1.3.0" term_glyph: dependency: transitive description: @@ -308,10 +321,10 @@ packages: dependency: transitive description: name: test_api - sha256: "5c2f730018264d276c20e4f1503fd1308dfbbae39ec8ee63c5236311ac06954b" + sha256: "664d3a9a64782fcdeb83ce9c6b39e78fd2971d4e37827b9b06c3aa1edc5e760c" url: "https://pub.dev" source: hosted - version: "0.6.1" + version: "0.7.3" typed_data: dependency: transitive description: @@ -332,10 +345,10 @@ packages: dependency: transitive description: name: vm_service - sha256: b3d56ff4341b8f182b96aceb2fa20e3dcb336b9f867bc0eafc0de10f1048e957 + sha256: "5c5f338a667b4c644744b661f309fb8080bb94b18a7e91ef1dbd343bed00ed6d" url: "https://pub.dev" source: hosted - version: "13.0.0" + version: "14.2.5" watcher: dependency: transitive description: @@ -344,22 +357,6 @@ packages: url: "https://pub.dev" source: hosted version: "1.1.0" - web: - dependency: transitive - description: - name: web - sha256: afe077240a270dcfd2aafe77602b4113645af95d0ad31128cc02bce5ac5d5152 - url: "https://pub.dev" - source: hosted - version: "0.3.0" - web_socket_channel: - dependency: transitive - description: - name: web_socket_channel - sha256: d88238e5eac9a42bb43ca4e721edba3c08c6354d4a53063afaa568516217621b - url: "https://pub.dev" - source: hosted - version: "2.4.0" yaml: dependency: transitive description: @@ -369,4 +366,5 @@ packages: source: hosted version: "3.1.2" sdks: - dart: ">=3.2.0-194.0.dev <4.0.0" + dart: ">=3.4.0 <4.0.0" + flutter: ">=3.18.0-18.0.pre.54" diff --git a/pubspec.yaml b/pubspec.yaml index 0cc0901..0b94deb 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -15,7 +15,7 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - mockito: ^5.4.3 + mockito: ^5.4.4 # For information on the generic Dart part of this file, see the # following page: https://www.dartlang.org/tools/pub/pubspec