From f472d7d68ccb49074d5c2b5741644cb5284fb50f Mon Sep 17 00:00:00 2001 From: Riccardo Cucia Date: Thu, 16 Dec 2021 14:37:43 +0100 Subject: [PATCH] First commit. --- .gitignore | 75 ++++++ .metadata | 10 + CHANGELOG.md | 5 + LICENSE | 23 ++ README.md | 113 +++++++++ analysis_options.yaml | 4 + doc/.media/example.jpg | Bin 0 -> 85856 bytes doc/.media/widget_tree_example.jpg | Bin 0 -> 74240 bytes example/.gitignore | 46 ++++ example/.metadata | 10 + example/README.md | 0 example/lib/helper/colored_container.dart | 30 +++ example/lib/main.dart | 217 ++++++++++++++++++ example/pubspec.lock | 168 ++++++++++++++ example/pubspec.yaml | 20 ++ lib/src/class/depth_counter.dart | 10 + lib/src/widget_tree_depth_counter.dart | 43 ++++ lib/widget_tree_depth_counter.dart | 4 + pubspec.lock | 175 ++++++++++++++ pubspec.yaml | 22 ++ test/flutter_widget_overlay_counter_test.dart | 1 + 21 files changed, 976 insertions(+) create mode 100644 .gitignore create mode 100644 .metadata create mode 100644 CHANGELOG.md create mode 100644 LICENSE create mode 100644 README.md create mode 100644 analysis_options.yaml create mode 100644 doc/.media/example.jpg create mode 100644 doc/.media/widget_tree_example.jpg create mode 100644 example/.gitignore create mode 100644 example/.metadata create mode 100644 example/README.md create mode 100644 example/lib/helper/colored_container.dart create mode 100644 example/lib/main.dart create mode 100644 example/pubspec.lock create mode 100644 example/pubspec.yaml create mode 100644 lib/src/class/depth_counter.dart create mode 100644 lib/src/widget_tree_depth_counter.dart create mode 100644 lib/widget_tree_depth_counter.dart create mode 100644 pubspec.lock create mode 100644 pubspec.yaml create mode 100644 test/flutter_widget_overlay_counter_test.dart diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a247422 --- /dev/null +++ b/.gitignore @@ -0,0 +1,75 @@ +# Miscellaneous +*.class +*.log +*.pyc +*.swp +.DS_Store +.atom/ +.buildlog/ +.history +.svn/ + +# IntelliJ related +*.iml +*.ipr +*.iws +.idea/ + +# The .vscode folder contains launch configuration and tasks you configure in +# VS Code which you may wish to be included in version control, so this line +# is commented out by default. +#.vscode/ + +# Flutter/Dart/Pub related +**/doc/api/ +.dart_tool/ +.flutter-plugins +.flutter-plugins-dependencies +.packages +.pub-cache/ +.pub/ +build/ + +# Android related +**/android/**/gradle-wrapper.jar +**/android/.gradle +**/android/captures/ +**/android/gradlew +**/android/gradlew.bat +**/android/local.properties +**/android/**/GeneratedPluginRegistrant.java + +# iOS/XCode related +**/ios/**/*.mode1v3 +**/ios/**/*.mode2v3 +**/ios/**/*.moved-aside +**/ios/**/*.pbxuser +**/ios/**/*.perspectivev3 +**/ios/**/*sync/ +**/ios/**/.sconsign.dblite +**/ios/**/.tags* +**/ios/**/.vagrant/ +**/ios/**/DerivedData/ +**/ios/**/Icon? +**/ios/**/Pods/ +**/ios/**/.symlinks/ +**/ios/**/profile +**/ios/**/xcuserdata +**/ios/.generated/ +**/ios/Flutter/App.framework +**/ios/Flutter/Flutter.framework +**/ios/Flutter/Flutter.podspec +**/ios/Flutter/Generated.xcconfig +**/ios/Flutter/ephemeral +**/ios/Flutter/app.flx +**/ios/Flutter/app.zip +**/ios/Flutter/flutter_assets/ +**/ios/Flutter/flutter_export_environment.sh +**/ios/ServiceDefinitions.json +**/ios/Runner/GeneratedPluginRegistrant.* + +# Exceptions to above rules. +!**/ios/**/default.mode1v3 +!**/ios/**/default.mode2v3 +!**/ios/**/default.pbxuser +!**/ios/**/default.perspectivev3 diff --git a/.metadata b/.metadata new file mode 100644 index 0000000..db56104 --- /dev/null +++ b/.metadata @@ -0,0 +1,10 @@ +# This file tracks properties of this Flutter project. +# Used by Flutter tool to assess capabilities and perform upgrades etc. +# +# This file should be version controlled and should not be manually edited. + +version: + revision: 18116933e77adc82f80866c928266a5b4f1ed645 + channel: stable + +project_type: package diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..d88e46a --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,5 @@ +# Widget Tree Depth Counter + +## [0.0.1-alpha] +#### [@rickypid](https://github.com/rickypid) +- Initial release. diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..0b64955 --- /dev/null +++ b/LICENSE @@ -0,0 +1,23 @@ +Copyright © 2021 Riccardo Cucia (https://www.rcprogrammer.net/) All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or + other materials provided with the distribution. +* Neither the name of Riccardo Cucia nor the names of its contributors may be used to + endorse or promote products derived from this software without specific prior + written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS” AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..ff8a1f2 --- /dev/null +++ b/README.md @@ -0,0 +1,113 @@ +#### widget_tree_depth_counter +# Widget Tree Depth Counter +[![Pub Package](https://img.shields.io/pub/v/widget_tree_depth_counter.svg?style=flat-square)](https://pub.dartlang.org/packages/widget_tree_depth_counter) +[![likes](https://badges.bar/widget_tree_depth_counter/likes)](https://pub.dev/packages/widget_tree_depth_counter/score) +[![popularity](https://badges.bar/widget_tree_depth_counter/popularity)](https://pub.dev/packages/widget_tree_depth_counter/score) +[![pub points](https://badges.bar/widget_tree_depth_counter/pub%20points)](https://pub.dev/packages/widget_tree_depth_counter/score) + +[![Package Issue](https://img.shields.io/github/issues/rickypid/widget_tree_depth_counter)](https://github.com/rickypid/widget_tree_depth_counter/issues) +![Package License](https://img.shields.io/github/license/rickypid/widget_tree_depth_counter) + +`WidgetTreeDepthCounter` is a simple widget to count the amount of nested widget tree, useful in the dynamic construction of the interface when it is important to know the depth of widget. + +| ![Image](https://github.com/rickypid/widget_tree_depth_counter/blob/master/doc/.media/example.jpg?raw=true) | +| :------------: | +| **WidgetTreeDepthCounter** | + +## Features + +* count of the depth of the widget with respect to the tree **(all uses of WidgetTreeDepthCounter in the current tree are counted, the other types of widgets are not counted)** + +This widget can be used conveniently in such cases: + +- Dynamically manage the colors of widgets based on their position in the tree +- in an app that manages chapter numbers it is very easy to renumber them in case a chapter is removed. +- ... + + Many other cases where it is very difficult to manage a widget through fixed parameters to be managed based on the construction of the tree. + +  + +## Usage + +Make sure to check out the [examples on GitHub](https://github.com/rickypid/widget_tree_depth_counter/tree/master/example). + +| ![Image](https://github.com/rickypid/widget_tree_depth_counter/blob/master/doc/.media/widget_tree_example.jpg?raw=true) | +| :------------: | +| **Example of operation in a widget tree** | + +### Installation + +#### From `pubspec.yaml` + +Add the following line to `pubspec.yaml`: + +```yaml +dependencies: + widget_tree_depth_counter: +``` + +and + +```bash +flutter pub get +``` + +#### From cli + +run following command: + +```bash +flutter pub add provider +``` + +### Basic setup + +*Complete example [available here](https://github.com/rickypid/widget_tree_depth_counter/blob/master/example/lib/main.dart).* + +```dart +ParentWidget( + child: WidgetTreeDepthCounter( + builder: (context, counter) => //counter=0 + Container( + color: Theme.of(context) + .primaryColor + .withOpacity(counter * 0.05 + 0.05), + child: WidgetTreeDepthCounter( + builder: (context, counter) =>//counter=1 + Container( + color: Theme.of(context) + .primaryColor + .withOpacity(counter * 0.05 + 0.05), + ), + ), + ), + ), +), +``` + +### WidgetTreeDepthCounter Properties + +* `builder`: Function called at layout time to construct the widget tree, return `Widget`. +* `count`: With this parameter it's possible define or overwrite the current depth count value. + +  + +### Use current `counter` value during build `WidgetTreeDepthCounter` + +`WidgetTreeDepthCounter` uses [Provider](https://pub.dev/packages/provider) library to count the depth, but if it is necessary to access the current value to perform a sum (for example), it is possible to retrieve the count value through the `Provider 'functions: + +```dart + +WidgetTreeDepthCounter( + count: context.read().value + 2, + builder: (context, counter) => + Text(counter.toString()), + ) + +``` + +**Obviously to access the value via `context.read()` it is necessary that at least one `WidgetTreeDepthCounter` is present in the tree and `provider` package is required.** + +  + diff --git a/analysis_options.yaml b/analysis_options.yaml new file mode 100644 index 0000000..a5744c1 --- /dev/null +++ b/analysis_options.yaml @@ -0,0 +1,4 @@ +include: package:flutter_lints/flutter.yaml + +# Additional information about this file can be found at +# https://dart.dev/guides/language/analysis-options diff --git a/doc/.media/example.jpg b/doc/.media/example.jpg new file mode 100644 index 0000000000000000000000000000000000000000..19a77358a261681779eac6f80777dae8d5450894 GIT binary patch literal 85856 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%0A`3Zy60WBA!ocES* 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
<6e(py2LM?k3PV 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 T6$Xi!C&)Rvobq7e|9=wzXnW=l literal 0 HcmV?d00001 diff --git a/example/.gitignore b/example/.gitignore new file mode 100644 index 0000000..0fa6b67 --- /dev/null +++ b/example/.gitignore @@ -0,0 +1,46 @@ +# Miscellaneous +*.class +*.log +*.pyc +*.swp +.DS_Store +.atom/ +.buildlog/ +.history +.svn/ + +# IntelliJ related +*.iml +*.ipr +*.iws +.idea/ + +# The .vscode folder contains launch configuration and tasks you configure in +# VS Code which you may wish to be included in version control, so this line +# is commented out by default. +#.vscode/ + +# Flutter/Dart/Pub related +**/doc/api/ +**/ios/Flutter/.last_build_id +.dart_tool/ +.flutter-plugins +.flutter-plugins-dependencies +.packages +.pub-cache/ +.pub/ +/build/ + +# Web related +lib/generated_plugin_registrant.dart + +# Symbolication related +app.*.symbols + +# Obfuscation related +app.*.map.json + +# Android Studio will place build artifacts here +/android/app/debug +/android/app/profile +/android/app/release diff --git a/example/.metadata b/example/.metadata new file mode 100644 index 0000000..136ed2f --- /dev/null +++ b/example/.metadata @@ -0,0 +1,10 @@ +# This file tracks properties of this Flutter project. +# Used by Flutter tool to assess capabilities and perform upgrades etc. +# +# This file should be version controlled and should not be manually edited. + +version: + revision: b2e05062b6d1d73024bbd42bf974509f9ddfb383 + channel: master + +project_type: app diff --git a/example/README.md b/example/README.md new file mode 100644 index 0000000..e69de29 diff --git a/example/lib/helper/colored_container.dart b/example/lib/helper/colored_container.dart new file mode 100644 index 0000000..683f213 --- /dev/null +++ b/example/lib/helper/colored_container.dart @@ -0,0 +1,30 @@ +import 'package:flutter/material.dart'; + +class ColoredContainer extends StatelessWidget { + final Color color; + final Widget? child; + final int counter; + + const ColoredContainer( + {Key? key, required this.color, this.child, required this.counter}) + : super(key: key); + + @override + Widget build(BuildContext context) { + return Stack( + children: [ + Container( + color: color, + margin: EdgeInsets.all(20), + child: child, + ), + Align( + alignment: Alignment.topLeft, + child: Padding( + padding: const EdgeInsets.only(top: 24, left: 24), + child: Text(counter.toString()), + )), + ], + ); + } +} diff --git a/example/lib/main.dart b/example/lib/main.dart new file mode 100644 index 0000000..1ed7fd0 --- /dev/null +++ b/example/lib/main.dart @@ -0,0 +1,217 @@ +import 'package:flutter/material.dart'; +import 'package:widget_tree_depth_counter/widget_tree_depth_counter.dart'; +import 'package:widget_tree_depth_counter_example/helper/colored_container.dart'; + +void main() => runApp(MyApp()); + +class MyApp extends StatelessWidget { + @override + Widget build(BuildContext context) { + return MaterialApp( + title: 'WidgetTreeDepthCounter Example', + theme: ThemeData(primarySwatch: Colors.blue), + home: const MyHomePage(), + ); + } +} + +class MyHomePage extends StatefulWidget { + const MyHomePage({Key? key}) : super(key: key); + + _MyHomePageState createState() => _MyHomePageState(); +} + +class _MyHomePageState extends State { + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: const Text('Widget tree depth counter'), + centerTitle: true, + ), + body: Container( + child: Center( + child: ColorExample(), + ), + ), + ); + } +} + +class ColorExample extends StatelessWidget { + const ColorExample({Key? key}) : super(key: key); + @override + Widget build(BuildContext context) { + return LayoutBuilder( + builder: (context, constraints) => Container( + width: constraints.maxWidth * .9, + height: constraints.maxHeight * .9, + child: WidgetTreeDepthCounter( + builder: (context, counter) => ColoredContainer( + counter: counter, + color: Theme.of(context) + .primaryColor + .withOpacity(counter * 0.05 + 0.05), + child: WidgetTreeDepthCounter( + builder: (context, counter) => ColoredContainer( + counter: counter, + color: Theme.of(context) + .primaryColor + .withOpacity(counter * 0.05 + 0.05), + child: WidgetTreeDepthCounter( + builder: (context, counter) => ColoredContainer( + counter: counter, + color: Theme.of(context) + .primaryColor + .withOpacity(counter * 0.05 + 0.05), + child: Row( + children: [ + Expanded( + flex: 1, + child: WidgetTreeDepthCounter( + builder: (context, counter) => ColoredContainer( + counter: counter, + color: Theme.of(context) + .primaryColor + .withOpacity(counter * 0.05 + 0.05), + ), + ), + ), + Expanded( + flex: 3, + child: WidgetTreeDepthCounter( + builder: (context, counter) => ColoredContainer( + counter: counter, + color: Theme.of(context) + .primaryColor + .withOpacity(counter * 0.05 + 0.05), + child: WidgetTreeDepthCounter( + builder: (context, counter) => ColoredContainer( + counter: counter, + color: Theme.of(context) + .primaryColor + .withOpacity(counter * 0.05 + 0.05), + child: Row( + children: [ + Expanded( + child: WidgetTreeDepthCounter( + builder: (context, counter) => + ColoredContainer( + counter: counter, + color: Theme.of(context) + .primaryColor + .withOpacity( + counter * 0.05 + 0.05), + child: Column( + children: [ + Expanded( + child: WidgetTreeDepthCounter( + builder: + (context, counter) => + ColoredContainer( + counter: counter, + color: Theme.of(context) + .primaryColor + .withOpacity( + counter * 0.05 + + 0.05), + ), + ), + ), + Expanded( + child: WidgetTreeDepthCounter( + builder: + (context, counter) => + ColoredContainer( + counter: counter, + color: Theme.of(context) + .primaryColor + .withOpacity( + counter * 0.05 + + 0.05), + child: + WidgetTreeDepthCounter( + builder: (context, + counter) => + ColoredContainer( + counter: counter, + color: Theme.of( + context) + .primaryColor + .withOpacity( + counter * + 0.05 + + 0.05), + ), + ), + ), + ), + ), + ], + ), + ), + ), + ), + Expanded( + child: WidgetTreeDepthCounter( + builder: (context, counter) => + ColoredContainer( + counter: counter, + color: Theme.of(context) + .primaryColor + .withOpacity( + counter * 0.05 + 0.05), + child: Row( + children: [ + Expanded( + child: WidgetTreeDepthCounter( + builder: + (context, counter) => + ColoredContainer( + counter: counter, + color: Theme.of(context) + .primaryColor + .withOpacity( + counter * 0.05 + + 0.05), + ), + ), + ), + Expanded( + child: WidgetTreeDepthCounter( + builder: + (context, counter) => + ColoredContainer( + counter: counter, + color: Theme.of(context) + .primaryColor + .withOpacity( + counter * 0.05 + + 0.05), + ), + ), + ), + ], + ), + ), + ), + ), + ], + ), + ), + ), + ), + ), + ), + ], + ), + ), + ), + ), + ), + ), + ), + ), + ); + } +} diff --git a/example/pubspec.lock b/example/pubspec.lock new file mode 100644 index 0000000..0e45cf0 --- /dev/null +++ b/example/pubspec.lock @@ -0,0 +1,168 @@ +# Generated by pub +# See https://dart.dev/tools/pub/glossary#lockfile +packages: + async: + dependency: transitive + description: + name: async + url: "https://pub.dartlang.org" + source: hosted + version: "2.8.1" + boolean_selector: + dependency: transitive + description: + name: boolean_selector + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.0" + characters: + dependency: transitive + description: + name: characters + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.0" + charcode: + dependency: transitive + description: + name: charcode + url: "https://pub.dartlang.org" + source: hosted + version: "1.3.1" + clock: + dependency: transitive + description: + name: clock + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.0" + collection: + dependency: transitive + description: + name: collection + url: "https://pub.dartlang.org" + source: hosted + version: "1.15.0" + fake_async: + dependency: transitive + description: + name: fake_async + url: "https://pub.dartlang.org" + source: hosted + version: "1.2.0" + flutter: + dependency: "direct main" + description: flutter + source: sdk + version: "0.0.0" + flutter_test: + dependency: "direct dev" + description: flutter + source: sdk + version: "0.0.0" + matcher: + dependency: transitive + description: + name: matcher + url: "https://pub.dartlang.org" + source: hosted + version: "0.12.10" + meta: + dependency: transitive + description: + name: meta + url: "https://pub.dartlang.org" + source: hosted + version: "1.7.0" + nested: + dependency: transitive + description: + name: nested + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.0" + path: + dependency: transitive + description: + name: path + url: "https://pub.dartlang.org" + source: hosted + version: "1.8.0" + provider: + dependency: "direct main" + description: + name: provider + url: "https://pub.dartlang.org" + source: hosted + version: "6.0.1" + sky_engine: + dependency: transitive + description: flutter + source: sdk + version: "0.0.99" + source_span: + dependency: transitive + description: + name: source_span + url: "https://pub.dartlang.org" + source: hosted + version: "1.8.1" + stack_trace: + dependency: transitive + description: + name: stack_trace + url: "https://pub.dartlang.org" + source: hosted + version: "1.10.0" + stream_channel: + dependency: transitive + description: + name: stream_channel + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.0" + string_scanner: + dependency: transitive + description: + name: string_scanner + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.0" + term_glyph: + dependency: transitive + description: + name: term_glyph + url: "https://pub.dartlang.org" + source: hosted + version: "1.2.0" + test_api: + dependency: transitive + description: + name: test_api + url: "https://pub.dartlang.org" + source: hosted + version: "0.4.2" + typed_data: + dependency: transitive + description: + name: typed_data + url: "https://pub.dartlang.org" + source: hosted + version: "1.3.0" + vector_math: + dependency: transitive + description: + name: vector_math + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.0" + widget_tree_depth_counter: + dependency: "direct dev" + description: + path: ".." + relative: true + source: path + version: "0.0.1-alpha" +sdks: + dart: ">=2.12.0 <3.0.0" + flutter: ">=1.17.0" diff --git a/example/pubspec.yaml b/example/pubspec.yaml new file mode 100644 index 0000000..706346d --- /dev/null +++ b/example/pubspec.yaml @@ -0,0 +1,20 @@ +name: widget_tree_depth_counter_example +description: Widget to count the amount of nested widget tree, useful in the dynamic construction of the interface when it is important to know the depth of widget. +version: 0.0.1-alpha + +environment: + sdk: ">=2.12.0 <3.0.0" + +dependencies: + flutter: + sdk: flutter + provider: ^6.0.1 + +dev_dependencies: + flutter_test: + sdk: flutter + widget_tree_depth_counter: + path: ../ + +flutter: + uses-material-design: true diff --git a/lib/src/class/depth_counter.dart b/lib/src/class/depth_counter.dart new file mode 100644 index 0000000..d6f184b --- /dev/null +++ b/lib/src/class/depth_counter.dart @@ -0,0 +1,10 @@ +import 'package:flutter/material.dart'; + +/// Class used to count current depth vale +class DepthCounter extends ChangeNotifier { + final int _value; + + /// Get current depth value + int get value => _value; + DepthCounter(this._value); +} diff --git a/lib/src/widget_tree_depth_counter.dart b/lib/src/widget_tree_depth_counter.dart new file mode 100644 index 0000000..e2b25fc --- /dev/null +++ b/lib/src/widget_tree_depth_counter.dart @@ -0,0 +1,43 @@ +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; +import 'package:widget_tree_depth_counter/src/class/depth_counter.dart'; + +/// `WidgetTreeDepthCounter` widget to count the amount of nested widget tree, useful in the dynamic construction of the interface when it is important to know the depth of widget. +class WidgetTreeDepthCounter extends StatelessWidget { + /// Called at layout time to construct the widget tree. + /// + /// The builder must not return null. + final Widget Function(BuildContext context, int counter) builder; + + /// Used this to redefine current count value + final int? count; + + const WidgetTreeDepthCounter({ + Key? key, + required this.builder, + this.count, + }) : super(key: key); + + @override + Widget build(BuildContext context) { + return ChangeNotifierProvider( + create: (context) { + DepthCounter? _counter; + if (count != null) { + _counter = DepthCounter(count!); + } else { + DepthCounter? _parentCounter; + try { + _parentCounter = context.read(); + _counter = DepthCounter(_parentCounter.value + 1); + } catch (e) { + _counter = DepthCounter(0); + } + } + return _counter; + }, + builder: (context, child) => + builder(context, context.read().value), + ); + } +} diff --git a/lib/widget_tree_depth_counter.dart b/lib/widget_tree_depth_counter.dart new file mode 100644 index 0000000..f3d9516 --- /dev/null +++ b/lib/widget_tree_depth_counter.dart @@ -0,0 +1,4 @@ +library widget_tree_depth_counter; + +export 'src/widget_tree_depth_counter.dart'; +export 'src/class/depth_counter.dart'; diff --git a/pubspec.lock b/pubspec.lock new file mode 100644 index 0000000..7676b99 --- /dev/null +++ b/pubspec.lock @@ -0,0 +1,175 @@ +# Generated by pub +# See https://dart.dev/tools/pub/glossary#lockfile +packages: + async: + dependency: transitive + description: + name: async + url: "https://pub.dartlang.org" + source: hosted + version: "2.8.1" + boolean_selector: + dependency: transitive + description: + name: boolean_selector + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.0" + characters: + dependency: transitive + description: + name: characters + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.0" + charcode: + dependency: transitive + description: + name: charcode + url: "https://pub.dartlang.org" + source: hosted + version: "1.3.1" + clock: + dependency: transitive + description: + name: clock + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.0" + collection: + dependency: transitive + description: + name: collection + url: "https://pub.dartlang.org" + source: hosted + version: "1.15.0" + fake_async: + dependency: transitive + description: + name: fake_async + url: "https://pub.dartlang.org" + source: hosted + version: "1.2.0" + flutter: + dependency: "direct main" + description: flutter + source: sdk + version: "0.0.0" + flutter_lints: + dependency: "direct dev" + description: + name: flutter_lints + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.4" + flutter_test: + dependency: "direct dev" + description: flutter + source: sdk + version: "0.0.0" + lints: + dependency: transitive + description: + name: lints + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.1" + matcher: + dependency: transitive + description: + name: matcher + url: "https://pub.dartlang.org" + source: hosted + version: "0.12.10" + meta: + dependency: transitive + description: + name: meta + url: "https://pub.dartlang.org" + source: hosted + version: "1.7.0" + nested: + dependency: transitive + description: + name: nested + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.0" + path: + dependency: transitive + description: + name: path + url: "https://pub.dartlang.org" + source: hosted + version: "1.8.0" + provider: + dependency: "direct main" + description: + name: provider + url: "https://pub.dartlang.org" + source: hosted + version: "6.0.1" + sky_engine: + dependency: transitive + description: flutter + source: sdk + version: "0.0.99" + source_span: + dependency: transitive + description: + name: source_span + url: "https://pub.dartlang.org" + source: hosted + version: "1.8.1" + stack_trace: + dependency: transitive + description: + name: stack_trace + url: "https://pub.dartlang.org" + source: hosted + version: "1.10.0" + stream_channel: + dependency: transitive + description: + name: stream_channel + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.0" + string_scanner: + dependency: transitive + description: + name: string_scanner + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.0" + term_glyph: + dependency: transitive + description: + name: term_glyph + url: "https://pub.dartlang.org" + source: hosted + version: "1.2.0" + test_api: + dependency: transitive + description: + name: test_api + url: "https://pub.dartlang.org" + source: hosted + version: "0.4.2" + typed_data: + dependency: transitive + description: + name: typed_data + url: "https://pub.dartlang.org" + source: hosted + version: "1.3.0" + vector_math: + dependency: transitive + description: + name: vector_math + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.0" +sdks: + dart: ">=2.12.0 <3.0.0" + flutter: ">=1.17.0" diff --git a/pubspec.yaml b/pubspec.yaml new file mode 100644 index 0000000..66d2e8c --- /dev/null +++ b/pubspec.yaml @@ -0,0 +1,22 @@ +name: widget_tree_depth_counter +description: Widget to count the amount of nested widget tree, useful in the dynamic construction of the interface when it is important to know the depth of widget. +version: 0.0.1-alpha +repository: https://github.com/rickypid/widget_tree_depth_counter +issue_tracker: https://github.com/rickypid/widget_tree_depth_counter/issues + +environment: + sdk: ">=2.12.0 <3.0.0" + flutter: ">=1.17.0" + +dependencies: + flutter: + sdk: flutter + provider: ^6.0.1 + +dev_dependencies: + flutter_test: + sdk: flutter + flutter_lints: ^1.0.0 + +flutter: + diff --git a/test/flutter_widget_overlay_counter_test.dart b/test/flutter_widget_overlay_counter_test.dart new file mode 100644 index 0000000..ab73b3a --- /dev/null +++ b/test/flutter_widget_overlay_counter_test.dart @@ -0,0 +1 @@ +void main() {}