InheritedWidgets, but simple

Overview

English | Português | 简体中文 | Español

Build Status codecov Gitter

A wrapper around InheritedWidget to make them easier to use and more reusable.

By using provider instead of manually writing InheritedWidget, you get:

  • simplified allocation/disposal of resources
  • lazy-loading
  • a largely reduced boilerplate over making a new class every time
  • devtools friendly
  • a common way to consume these InheritedWidgets (See Provider.of/Consumer/Selector)
  • increased scalability for classes with a listening mechanism that grows exponentially in complexity (such as ChangeNotifier, which is O(N) for dispatching notifications).

To read more about provider, see its documentation.

See also:

Migration from 4.x.x to 5.0.0-nullsafety

  • initialData for both FutureProvider and StreamProvider is now required.

    To migrate, what used to be:

    FutureProvider<int>(
      create: (context) => Future.value(42),
      child: MyApp(),
    )
    
    Widget build(BuildContext context) {
      final value = context.watch<int>();
      return Text('$value');
    }

    is now:

    FutureProvider<int?>(
      initialValue: null,
      create: (context) => Future.value(42),
      child: MyApp(),
    )
    
    Widget build(BuildContext context) {
      // be sure to specify the ? in watch<int?>
      final value = context.watch<int?>();
      return Text('$value');
    }
  • ValueListenableProvider is removed

    To migrate, you can instead use Provider combined with ValueListenableBuilder:

    ValueListenableBuilder<int>(
      valueListenable: myValueListenable,
      builder: (context, value, _) {
        return Provider<int>.value(
          value: value,
          child: MyApp(),
        );
      }
    )

Usage

Exposing a value

Exposing a new object instance

Providers allow to not only expose a value, but also create/listen/dispose it.

To expose a newly created object, use the default constructor of a provider. Do not use the .value constructor if you want to create an object, or you may otherwise have undesired side-effects.

See this stackoverflow answer which explains in further details why using the .value constructor to create values is undesired.

  • DO create a new object inside create.
Provider(
  create: (_) => MyModel(),
  child: ...
)
  • DON'T use Provider.value to create your object.
ChangeNotifierProvider.value(
  value: MyModel(),
  child: ...
)
  • DON'T create your object from variables that can change over time.

    In such a situation, your object would never be updated when the value changes.

int count;

Provider(
  create: (_) => MyModel(count),
  child: ...
)

If you want to pass variables that can change over time to your object, consider using ProxyProvider:

int count;

ProxyProvider0(
  update: (_, __) => MyModel(count),
  child: ...
)

NOTE:

When using the create/update callback of a provider, it is worth noting that this callback is called lazily by default.

What this means is, until the value is requested at least once, the create/update callbacks won't be called.

This behavior can be disabled if you want to pre-compute some logic, using the lazy parameter:

MyProvider(
  create: (_) => Something(),
  lazy: false,
)

Reusing an existing object instance:

If you already have an object instance and want to expose it, you should use the .value constructor of a provider.

Failing to do so may call the dispose method of your object when it is still in use.

  • DO use ChangeNotifierProvider.value to provide an existing ChangeNotifier.
MyChangeNotifier variable;

ChangeNotifierProvider.value(
  value: variable,
  child: ...
)
  • DON'T reuse an existing ChangeNotifier using the default constructor
MyChangeNotifier variable;

ChangeNotifierProvider(
  create: (_) => variable,
  child: ...
)

Reading a value

The easiest way to read a value is by using the extension methods on [BuildContext]:

  • context.watch<T>(), which makes the widget listen to changes on T
  • context.read<T>(), which returns T without listening to it
  • context.select<T, R>(R cb(T value)), which allows a widget to listen to only a small part of T.

Or to use the static method Provider.of<T>(context), which will behave similarly to watch and when you pass false to the listen parameter like Provider.of<T>(context,listen: false) it will behave similar to read.

It's worth noting that context.read<T>() won't make widget rebuild when the value changes and cannot be called inside StatelessWidget.build/State.build. On the other hand, it can be freely called outside of these methods.

These methods will look up in the widget tree starting from the widget associated with the BuildContext passed, and will return the nearest variable of type T found (or throw if nothing is found).

It's worth noting that this operation is O(1). It doesn't involve actually walking in the widget tree.

Combined with the first example of exposing a value, this widget will read the exposed String and render "Hello World."

class Home extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Text(
      // Don't forget to pass the type of the object you want to obtain to `watch`!
      context.watch<String>(),
    );
  }
}

Alternatively, instead of using these methods, we can use Consumer and Selector.

These can be useful for performance optimizations or when it is difficult to obtain a BuildContext descendant of the provider.

See the FAQ or the documentation of Consumer and Selector for more information.

MultiProvider

When injecting many values in big applications, Provider can rapidly become pretty nested:

Provider<Something>(
  create: (_) => Something(),
  child: Provider<SomethingElse>(
    create: (_) => SomethingElse(),
    child: Provider<AnotherThing>(
      create: (_) => AnotherThing(),
      child: someWidget,
    ),
  ),
),

To:

MultiProvider(
  providers: [
    Provider<Something>(create: (_) => Something()),
    Provider<SomethingElse>(create: (_) => SomethingElse()),
    Provider<AnotherThing>(create: (_) => AnotherThing()),
  ],
  child: someWidget,
)

The behavior of both examples is strictly the same. MultiProvider only changes the appearance of the code.

ProxyProvider

Since the 3.0.0, there is a new kind of provider: ProxyProvider.

ProxyProvider is a provider that combines multiple values from other providers into a new object, and sends the result to Provider.

That new object will then be updated whenever one of the providers it depends on updates.

The following example uses ProxyProvider to build translations based on a counter coming from another provider.

Widget build(BuildContext context) {
  return MultiProvider(
    providers: [
      ChangeNotifierProvider(create: (_) => Counter()),
      ProxyProvider<Counter, Translations>(
        update: (_, counter, __) => Translations(counter.value),
      ),
    ],
    child: Foo(),
  );
}

class Translations {
  const Translations(this._value);

  final int _value;

  String get title => 'You clicked $_value times';
}

It comes under multiple variations, such as:

  • ProxyProvider vs ProxyProvider2 vs ProxyProvider3, ...

    That digit after the class name is the number of other providers that ProxyProvider depends on.

  • ProxyProvider vs ChangeNotifierProxyProvider vs ListenableProxyProvider, ...

    They all work similarly, but instead of sending the result into a Provider, a ChangeNotifierProxyProvider will send its value to a ChangeNotifierProvider.

FAQ

Can I inspect the content of my objects?

Flutter comes with a devtool that shows what the widget tree is at a given moment.

Since providers are widgets, they are also visible in that devtool:

From there, if you click on one provider, you will be able to see the value it exposes:

(screenshot of the devtools using the example folder)

The devtool only shows "Instance of MyClass". What can I do?

By default, the devtool relies on toString, which defaults to "Instance of MyClass".

To have something more useful, you have two solutions:

  • use the Diagnosticable API from Flutter.

    For most cases, that will be done my using DiagnosticableTreeMixin on your objects, followed by a custom implementation of debugFillProperties.

    class MyClass with DiagnosticableTreeMixin {
      MyClass({this.a, this.b});
    
      final int a;
      final String b;
    
      @override
      void debugFillProperties(DiagnosticPropertiesBuilder properties) {
        super.debugFillProperties(properties);
        // list all the properties of your class here.
        // See the documentation of debugFillProperties for more information.
        properties.add(IntProperty('a', a));
        properties.add(StringProperty('b', b));
      }
    }
  • override toString.

    If you cannot use DiagnosticableTreeMixin (like if your class is in a package that does not depend on Flutter), then you can simply override toString.

    This is easier than using DiagnosticableTreeMixin but is less powerful: You will not be able to expand/collapse the details of your object.

    class MyClass with DiagnosticableTreeMixin {
      MyClass({this.a, this.b});
    
      final int a;
      final String b;
    
      @override
      String toString() {
        return '$runtimeType(a: $a, b: $b)';
      }
    }

I have an exception when obtaining Providers inside initState. What can I do?

This exception happens because you're trying to listen to a provider from a life-cycle that will never ever be called again.

It means that you either should use another life-cycle (build), or explicitly specify that you do not care about updates.

As such, instead of:

initState() {
  super.initState();
  print(context.watch<Foo>().value);
}

you can do:

Value value;

Widget build(BuildContext context) {
  final value = context.watch<Foo>.value;
  if (value != this.value) {
    this.value = value;
    print(value);
  }
}

which will print value whenever it changes (and only when it changes).

Alternatively you can do:

initState() {
  super.initState();
  print(context.read<Foo>().value);
}

Which will print value once and ignore updates.

How to handle hot-reload on my objects?

You can make your provided object implement ReassembleHandler:

class Example extends ChangeNotifier implements ReassembleHandler {
  @override
  void reassemble() {
    print('Did hot-reload');
  }
}

Then used normally with provider:

ChangeNotifierProvider(create: (_) => Example()),

I use ChangeNotifier and I have an exception when I update it, what happens?

This likely happens because you are modifying the ChangeNotifier from one of its descendants while the widget tree is building.

A typical situation where this happens is when starting an http request, where the future is stored inside the notifier:

initState() {
  super.initState();
  context.read<MyNotifier>().fetchSomething();
}

This is not allowed, because the state update is synchronous.

Which means that some widgets may build before the mutation happens (getting an old value), while other widgets will build after the mutation is complete (getting a new value). This could cause inconsistencies in your UI and is therefore not allowed.

Instead, you should perform that mutation in a place that would affect the entire tree equally:

  • directly inside the create of your provider/constructor of your model:

    class MyNotifier with ChangeNotifier {
      MyNotifier() {
        _fetchSomething();
      }
    
      Future<void> _fetchSomething() async {}
    }

    This is useful when there's no "external parameter".

  • asynchronously at the end of the frame:

    initState() {
      super.initState();
      Future.microtask(() =>
        context.read<MyNotifier>(context).fetchSomething(someValue);
      );
    }

    It is slightly less ideal, but allows passing parameters to the mutation.

Do I have to use ChangeNotifier for complex states?

No.

You can use any object to represent your state. For example, an alternate architecture is to use Provider.value() combined with a StatefulWidget.

Here's a counter example using such architecture:

class Example extends StatefulWidget {
  const Example({Key key, this.child}) : super(key: key);

  final Widget child;

  @override
  ExampleState createState() => ExampleState();
}

class ExampleState extends State<Example> {
  int _count;

  void increment() {
    setState(() {
      _count++;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Provider.value(
      value: _count,
      child: Provider.value(
        value: this,
        child: widget.child,
      ),
    );
  }
}

where we can read the state by doing:

return Text(context.watch<int>().toString());

and modify the state with:

return FloatingActionButton(
  onPressed: () => context.read<ExampleState>().increment(),
  child: Icon(Icons.plus_one),
);

Alternatively, you can create your own provider.

Can I make my own Provider?

Yes. provider exposes all the small components that make a fully-fledged provider.

This includes:

  • SingleChildStatelessWidget, to make any widget works with MultiProvider.
    This interface is exposed as part of package:provider/single_child_widget

  • InheritedProvider, the generic InheritedWidget obtained when doing context.watch.

Here's an example of a custom provider to use ValueNotifier as state: https://gist.github.com/rrousselGit/4910f3125e41600df3c2577e26967c91

My widget rebuilds too often, what can I do?

Instead of context.watch, you can use context.select to listen only to a specific set of properties on the obtained object.

For example, while you can write:

Widget build(BuildContext context) {
  final person = context.watch<Person>();
  return Text(person.name);
}

It may cause the widget to rebuild if something other than name changes.

Instead, you can use context.select to listen only to the name property:

Widget build(BuildContext context) {
  final name = context.select((Person p) => p.name);
  return Text(name);
}

This way, the widget won't unnecessarily rebuild if something other than name changes.

Similarly, you can use Consumer/Selector. Their optional child argument allows to rebuild only a very specific part of the widget tree:

Foo(
  child: Consumer<A>(
    builder: (_, a, child) {
      return Bar(a: a, child: child);
    },
    child: Baz(),
  ),
)

In this example, only Bar will rebuild when A updates. Foo and Baz won't unnecessarily rebuild.

Can I obtain two different providers using the same type?

No. While you can have multiple providers sharing the same type, a widget will be able to obtain only one of them: the closest ancestor.

Instead, you must explicitly give both providers a different type.

Instead of:

Provider<String>(
  create: (_) => 'England',
  child: Provider<String>(
    create: (_) => 'London',
    child: ...,
  ),
),

Prefer:

Provider<Country>(
  create: (_) => Country('England'),
  child: Provider<City>(
    create: (_) => City('London'),
    child: ...,
  ),
),

Can I consume an interface and provide an implementation?

Yes, a type hint must be given to the compiler to indicate the interface will be consumed, with the implementation provided in create.

abstract class ProviderInterface with ChangeNotifier {
  ...
}

class ProviderImplementation with ChangeNotifier implements ProviderInterface {
  ...
}

class Foo extends StatelessWidget {
  @override
  build(context) {
    final provider = Provider.of<ProviderInterface>(context);
    return ...
  }
}

ChangeNotifierProvider<ProviderInterface>(
  create: (_) => ProviderImplementation(),
  child: Foo(),
),

Existing providers

provider exposes a few different kinds of "provider" for different types of objects.

The complete list of all the objects available is here

name description
Provider The most basic form of provider. It takes a value and exposes it, whatever the value is.
ListenableProvider A specific provider for Listenable object. ListenableProvider will listen to the object and ask widgets which depend on it to rebuild whenever the listener is called.
ChangeNotifierProvider A specification of ListenableProvider for ChangeNotifier. It will automatically call ChangeNotifier.dispose when needed.
ValueListenableProvider Listen to a ValueListenable and only expose ValueListenable.value.
StreamProvider Listen to a Stream and expose the latest value emitted.
FutureProvider Takes a Future and updates dependents when the future completes.
Comments
  • [REQ] Documented diagrams

    [REQ] Documented diagrams

    I did this simple sketch example, I'm no expert, but I think if the dev team adds diagrams to documentation will help a lot people that are starting to learn this Plugin. There's information missing like how the values behave, how they update, etc... With all this providers and ways to reach the provided values it is start to get confusing.

    Provider

    help wanted good first issue 
    opened by peekpt 150
  • Add listen: false to Consumer

    Add listen: false to Consumer

    Sometimes I need just a Provider.of<T>(context, listen: false) but I can't use it since I don't have a BuilderContext with the type I want to access (they are all in the same Widget). Consumer using child is a good solution, but not a perfect one, since the builder method will execute for all Provider updates.

    There are situations where we just want a value and no updates at all, but we don't have BuilderContext. We could just add a BuilderContext and use Provider.of, but it would be a lot more readable if we could just pass listen: false to a Consumer.

    question 
    opened by feinstein 58
  • feat!: null safety

    feat!: null safety

    WIP

    • opt into null safety (closes #573)
    • still need to go back over a lot of the API surface
    • mockito is still a dev_dependency so we will either need to wait for a null safety release of mockito or remove the dependency
    opened by felangel 45
  • Document good practices around

    Document good practices around "listen" flag

    In issue #188 we discussed adding a class analogous to Consumer but which doesn't rebuild on value changes. It seemed to me that you, Remi, were against the idea because you had better plans. Those plans appeared to be contingent on Flutter making debugBuilding available in release mode. The Flutter team declined, so I'm here formally proposing a convenience class.

    I'm using this class in my own code because sometimes it makes for cleaner code; that's all Consumer is doing, anyway. I'm calling it Dependent:

    import 'package:flutter/material.dart';
    import 'package:provider/provider.dart';
    
    class Dependent<T> extends StatelessWidget {
      Dependent({Key key, @required this.builder, this.child});
    
      final Widget Function(BuildContext cx, T value, Widget child) builder;
      final Widget child;
    
      @override
      Widget build(BuildContext cx) {
        final value = Provider.of<T>(cx, listen: false);
        return builder(cx, value, child);
      }
    }
    
    class Dependent2<T1, T2> extends StatelessWidget {
      Dependent2({Key key, @required this.builder, this.child});
    
      final Widget Function(BuildContext cx, T1 value1, T2 value2, Widget child)
          builder;
      final Widget child;
    
      @override
      Widget build(BuildContext cx) {
        final value1 = Provider.of<T1>(cx, listen: false);
        final value2 = Provider.of<T2>(cx, listen: false);
        return builder(cx, value1, value2, child);
      }
    }
    

    We also discussed naming this class NoRebuildConsumer and UnboundConsumer. Another possibility is NonlisteningConsumer. I'm kind of partial to Dependent because the dependent can still call Provider.of<T>() for some other type and therefore still rebuild.

    documentation 
    opened by jtlapp 42
  • v2.0.0

    v2.0.0

    • [x] remove the dependency on flutter_hooks.
    • [x] add Flutter Team <[email protected]> to the authors in pubspec.yaml
    • [ ] potentially add an optional child argument on Consumer for performance optimization
    • [x] A ListenableProvider, like ChangeNotifierProvider but for Listenable.
    • [ ] update documentation/readme/changelog
    opened by rrousselGit 36
  • flutter release mode Can't rebuild stateless widget on provider notifyListeners()

    flutter release mode Can't rebuild stateless widget on provider notifyListeners()

    Can't rebuild stateless widget on provider notifyListeners() when changes variable. It happens only in release mode but in debug mode everything is fine.

    Expected results: Rebuild stateless widget on every notifyListeners() of provider

    Actual results: Widget is not rebuilds

    Logs

    flutter run --release -v

    [ +136 ms] executing: [D:\DK_Projects\flutter/] git -c log.showSignature=false log -n 1 --pretty=format:%H
    [  +57 ms] Exit code 0 from: git -c log.showSignature=false log -n 1 --pretty=format:%H
    [        ] 2ae34518b87dd891355ed6c6ea8cb68c4d52bb9d
    [   +1 ms] executing: [D:\DK_Projects\flutter/] git tag --contains HEAD
    [ +213 ms] Exit code 0 from: git tag --contains HEAD
    [        ] 1.20.1
    [   +8 ms] executing: [D:\DK_Projects\flutter/] git rev-parse --abbrev-ref --symbolic @{u}
    [  +30 ms] Exit code 0 from: git rev-parse --abbrev-ref --symbolic @{u}
    [        ] origin/stable
    [        ] executing: [D:\DK_Projects\flutter/] git ls-remote --get-url origin
    [  +29 ms] Exit code 0 from: git ls-remote --get-url origin
    [        ] https://github.com/flutter/flutter.git
    [  +72 ms] executing: [D:\DK_Projects\flutter/] git rev-parse --abbrev-ref HEAD
    [  +32 ms] Exit code 0 from: git rev-parse --abbrev-ref HEAD
    [        ] stable
    [  +55 ms] Artifact Instance of 'AndroidMavenArtifacts' is not required, skipping update.
    [        ] Artifact Instance of 'AndroidGenSnapshotArtifacts' is not required, skipping update.
    [        ] Artifact Instance of 'AndroidInternalBuildArtifacts' is not required, skipping update.
    [        ] Artifact Instance of 'IOSEngineArtifacts' is not required, skipping update.
    [        ] Artifact Instance of 'FlutterWebSdk' is not required, skipping update.
    [   +3 ms] Artifact Instance of 'WindowsEngineArtifacts' is not required, skipping update.
    [        ] Artifact Instance of 'MacOSEngineArtifacts' is not required, skipping update.
    [        ] Artifact Instance of 'LinuxEngineArtifacts' is not required, skipping update.
    [        ] Artifact Instance of 'LinuxFuchsiaSDKArtifacts' is not required, skipping update.
    [        ] Artifact Instance of 'MacOSFuchsiaSDKArtifacts' is not required, skipping update.
    [        ] Artifact Instance of 'FlutterRunnerSDKArtifacts' is not required, skipping update.
    [        ] Artifact Instance of 'FlutterRunnerDebugSymbols' is not required, skipping update.
    [  +22 ms] executing: D:\DK_Projects\AndroidSDK\platform-tools\adb.exe devices -l
    [  +41 ms] List of devices attached
               320001fc5b42b513       device product:a7y18lteser model:SM_A750FN device:a7y18lte transport_id:8
    [   +7 ms] D:\DK_Projects\AndroidSDK\platform-tools\adb.exe -s 320001fc5b42b513 shell getprop
    [ +100 ms] Artifact Instance of 'AndroidMavenArtifacts' is not required, skipping update.
    [   +6 ms] Artifact Instance of 'AndroidInternalBuildArtifacts' is not required, skipping update.
    [        ] Artifact Instance of 'IOSEngineArtifacts' is not required, skipping update.
    [        ] Artifact Instance of 'FlutterWebSdk' is not required, skipping update.
    [   +2 ms] Artifact Instance of 'WindowsEngineArtifacts' is not required, skipping update.
    [        ] Artifact Instance of 'MacOSEngineArtifacts' is not required, skipping update.
    [        ] Artifact Instance of 'LinuxEngineArtifacts' is not required, skipping update.
    [        ] Artifact Instance of 'LinuxFuchsiaSDKArtifacts' is not required, skipping update.
    [        ] Artifact Instance of 'MacOSFuchsiaSDKArtifacts' is not required, skipping update.
    [        ] Artifact Instance of 'FlutterRunnerSDKArtifacts' is not required, skipping update.
    [        ] Artifact Instance of 'FlutterRunnerDebugSymbols' is not required, skipping update.
    [  +71 ms] Running "flutter pub get" in lomay_sowda...
    [   +4 ms] Using D:\DK_Projects\flutter\.pub-cache for the pub cache.
    [   +1 ms] executing: [D:\DK_Projects\FlutterProjects\Learning\lomay_sowda/] D:\DK_Projects\flutter\bin\cache\dart-sdk\bin\pub.bat --verbose get --no-precompile
    [ +138 ms] FINE: Pub 2.9.0
    [   +2 ms] IO  : Spawning "cmd /c ver" in D:\DK_Projects\FlutterProjects\Learning\lomay_sowda\.
    [   +4 ms] IO  : Finished ver. Exit code 0.
    [        ]     | stdout:
    [        ]     | | 
    [        ]     | | Microsoft Windows [Version 10.0.18363.815]
    [        ]     | Nothing output on stderr.
    [  +58 ms] MSG : Resolving dependencies...
    [  +62 ms] SLVR: fact: lomaysowda is 1.0.0+1
    [   +6 ms] SLVR: derived: lomaysowda
    [  +32 ms] SLVR: fact: lomaysowda depends on flutter any from sdk
    [        ] SLVR: fact: lomaysowda depends on cupertino_icons ^0.1.2
    [        ] SLVR: fact: lomaysowda depends on http ^0.12.1
    [        ] SLVR: fact: lomaysowda depends on carousel_pro ^1.0.0
    [   +1 ms] SLVR: fact: lomaysowda depends on clip_shadow any
    [        ] SLVR: fact: lomaysowda depends on flutter_icons ^1.1.0
    [        ] SLVR: fact: lomaysowda depends on flutter_bloc ^4.0.1
    [        ] SLVR: fact: lomaysowda depends on bloc ^4.0.0
    [        ] SLVR: fact: lomaysowda depends on equatable ^1.2.0
    [        ] SLVR: fact: lomaysowda depends on badges ^1.1.1
    [   +1 ms] SLVR: fact: lomaysowda depends on styled_text ^1.0.1+1
    [        ] SLVR: fact: lomaysowda depends on flutter_svg ^0.18.0
    [        ] SLVR: fact: lomaysowda depends on sqflite ^1.3.1
    [   +1 ms] SLVR: fact: lomaysowda depends on device_info ^0.4.2+4
    [        ] SLVR: fact: lomaysowda depends on path_provider ^1.6.11
    [        ] SLVR: fact: lomaysowda depends on provider ^4.3.1
    [        ] SLVR: fact: lomaysowda depends on cached_network_image ^2.2.0+1
    [        ] SLVR: fact: lomaysowda depends on flutter_test any from sdk
    [        ] SLVR:   selecting lomaysowda
    [        ] SLVR:   derived: flutter_test any from sdk
    [        ] SLVR:   derived: cached_network_image ^2.2.0+1
    [        ] SLVR:   derived: provider ^4.3.1
    [        ] SLVR:   derived: path_provider ^1.6.11
    [        ] SLVR:   derived: device_info ^0.4.2+4
    [   +1 ms] SLVR:   derived: sqflite ^1.3.1
    [   +1 ms] SLVR:   derived: flutter_svg ^0.18.0
    [   +2 ms] SLVR:   derived: styled_text ^1.0.1+1
    [        ] SLVR:   derived: badges ^1.1.1
    [        ] SLVR:   derived: equatable ^1.2.0
    [        ] SLVR:   derived: bloc ^4.0.0
    [        ] SLVR:   derived: flutter_bloc ^4.0.1
    [        ] SLVR:   derived: flutter_icons ^1.1.0
    [        ] SLVR:   derived: clip_shadow any
    [        ] SLVR:   derived: carousel_pro ^1.0.0
    [        ] SLVR:   derived: http ^0.12.1
    [        ] SLVR:   derived: cupertino_icons ^0.1.2
    [        ] SLVR:   derived: flutter any from sdk
    [   +2 ms] SLVR:   fact: flutter_test 0.0.0 from sdk depends on flutter any from sdk
    [        ] SLVR:   fact: flutter_test 0.0.0 from sdk depends on test_api 0.2.17
    [        ] SLVR:   fact: flutter_test 0.0.0 from sdk depends on path 1.7.0
    [   +1 ms] SLVR:   fact: flutter_test 0.0.0 from sdk depends on fake_async 1.1.0
    [   +3 ms] SLVR:   fact: flutter_test 0.0.0 from sdk depends on clock 1.0.1
    [        ] SLVR:   fact: flutter_test 0.0.0 from sdk depends on stack_trace 1.9.5
    [   +1 ms] SLVR:   fact: flutter_test 0.0.0 from sdk depends on vector_math 2.0.8
    [        ] SLVR:   fact: flutter_test 0.0.0 from sdk depends on async 2.4.2
    [        ] SLVR:   fact: flutter_test 0.0.0 from sdk depends on boolean_selector 2.0.0
    [        ] SLVR:   fact: flutter_test 0.0.0 from sdk depends on characters 1.0.0
    [        ] SLVR:   fact: flutter_test 0.0.0 from sdk depends on charcode 1.1.3
    [        ] SLVR:   fact: flutter_test 0.0.0 from sdk depends on collection 1.14.13
    [        ] SLVR:   fact: flutter_test 0.0.0 from sdk depends on matcher 0.12.8
    [        ] SLVR:   fact: flutter_test 0.0.0 from sdk depends on meta 1.1.8
    [        ] SLVR:   fact: flutter_test 0.0.0 from sdk depends on source_span 1.7.0
    [        ] SLVR:   fact: flutter_test 0.0.0 from sdk depends on stream_channel 2.0.0
    [        ] SLVR:   fact: flutter_test 0.0.0 from sdk depends on string_scanner 1.0.5
    [        ] SLVR:   fact: flutter_test 0.0.0 from sdk depends on term_glyph 1.1.0
    [        ] SLVR:   fact: flutter_test 0.0.0 from sdk depends on typed_data 1.2.0
    [        ] SLVR:     selecting flutter_test 0.0.0 from sdk
    [        ] SLVR:     derived: typed_data 1.2.0
    [        ] SLVR:     derived: term_glyph 1.1.0
    [   +4 ms] SLVR:     derived: string_scanner 1.0.5
    [   +1 ms] SLVR:     derived: stream_channel 2.0.0
    [        ] SLVR:     derived: source_span 1.7.0
    [        ] SLVR:     derived: meta 1.1.8
    [        ] SLVR:     derived: matcher 0.12.8
    [        ] SLVR:     derived: collection 1.14.13
    [        ] SLVR:     derived: charcode 1.1.3
    [        ] SLVR:     derived: characters 1.0.0
    [        ] SLVR:     derived: boolean_selector 2.0.0
    [        ] SLVR:     derived: async 2.4.2
    [        ] SLVR:     derived: vector_math 2.0.8
    [        ] SLVR:     derived: stack_trace 1.9.5
    [        ] SLVR:     derived: clock 1.0.1
    [        ] SLVR:     derived: fake_async 1.1.0
    [        ] SLVR:     derived: path 1.7.0
    [        ] SLVR:     derived: test_api 0.2.17
    [   +2 ms] SLVR:     fact: cached_network_image 2.2.0+1 depends on flutter any from sdk
    [   +2 ms] SLVR:     fact: cached_network_image 2.2.0+1 depends on flutter_cache_manager ^1.2.0
    [        ] SLVR:       selecting cached_network_image 2.2.0+1
    [        ] SLVR:       derived: flutter_cache_manager ^1.2.0
    [   +3 ms] SLVR:       fact: provider 4.3.1 depends on flutter any from sdk
    [        ] SLVR:       fact: provider 4.3.1 depends on nested >=0.0.4 <2.0.0
    [        ] SLVR:       fact: provider 4.3.1 depends on collection ^1.14.0
    [        ] SLVR:         selecting provider 4.3.1
    [        ] SLVR:         derived: nested >=0.0.4 <2.0.0
    [   +7 ms] SLVR:         fact: path_provider 1.6.11 depends on flutter any from sdk
    [        ] SLVR:         fact: path_provider 1.6.11 depends on path_provider_platform_interface ^1.0.1
    [   +1 ms] SLVR:         fact: path_provider 1.6.11 depends on path_provider_macos ^0.0.4
    [        ] SLVR:         fact: path_provider 1.6.11 depends on path_provider_linux ^0.0.1
    [        ] SLVR:           selecting path_provider 1.6.11
    [        ] SLVR:           derived: path_provider_linux ^0.0.1
    [        ] SLVR:           derived: path_provider_macos ^0.0.4
    [        ] SLVR:           derived: path_provider_platform_interface ^1.0.1
    [   +6 ms] SLVR:           fact: device_info 0.4.2+4 depends on flutter any from sdk
    [   +3 ms] SLVR:             selecting device_info 0.4.2+4
    [   +6 ms] SLVR:             fact: sqflite 1.3.1 depends on flutter any from sdk
    [        ] SLVR:             fact: sqflite 1.3.1 depends on sqflite_common >=1.0.1 <3.0.0
    [        ] SLVR:             fact: sqflite 1.3.1 depends on path >=1.5.1 <3.0.0
    [        ] SLVR:               selecting sqflite 1.3.1
    [        ] SLVR:               derived: sqflite_common >=1.0.1 <3.0.0
    [   +6 ms] SLVR:               fact: flutter_svg 0.18.0 depends on path_drawing ^0.4.1
    [   +1 ms] SLVR:               fact: flutter_svg 0.18.0 depends on xml ^4.1.0
    [   +1 ms] SLVR:               fact: flutter_svg 0.18.0 depends on vector_math ^2.0.4
    [        ] SLVR:               fact: flutter_svg 0.18.0 depends on meta ^1.1.2
    [        ] SLVR:               fact: flutter_svg 0.18.0 depends on flutter any from sdk
    [        ] SLVR:                 selecting flutter_svg 0.18.0
    [        ] SLVR:                 derived: xml ^4.1.0
    [        ] SLVR:                 derived: path_drawing ^0.4.1
    [   +3 ms] SLVR:                 fact: styled_text 1.0.1+1 depends on flutter any from sdk
    [   +1 ms] SLVR:                 fact: styled_text 1.0.1+1 depends on xmlstream ^0.11.1
    [        ] SLVR:                   selecting styled_text 1.0.1+1
    [        ] SLVR:                   derived: xmlstream ^0.11.1
    [   +8 ms] SLVR:                   fact: badges 1.1.1 depends on flutter any from sdk
    [   +1 ms] SLVR:                     selecting badges 1.1.1
    [   +7 ms] SLVR:                     fact: equatable 1.2.3 depends on collection ^1.14.11
    [   +1 ms] SLVR:                     fact: equatable 1.2.3 depends on meta ^1.1.6
    [        ] SLVR:                       selecting equatable 1.2.3
    [   +7 ms] SLVR:                       fact: bloc 4.0.0 depends on meta ^1.1.6
    [        ] SLVR:                         selecting bloc 4.0.0
    [   +7 ms] SLVR:                         fact: flutter_bloc 4.0.1 depends on flutter any from sdk
    [        ] SLVR:                         fact: flutter_bloc 4.0.1 depends on bloc ^4.0.0
    [        ] SLVR:                         fact: flutter_bloc 4.0.1 depends on provider ^4.0.5
    [        ] SLVR:                           selecting flutter_bloc 4.0.1
    [  +12 ms] SLVR:                           fact: flutter_icons 1.1.0 depends on flutter any from sdk
    [   +1 ms] SLVR:                             selecting flutter_icons 1.1.0
    [   +7 ms] SLVR:                             fact: clip_shadow 0.2.1 depends on flutter any from sdk
    [        ] SLVR:                               selecting clip_shadow 0.2.1
    [   +5 ms] SLVR:                               fact: carousel_pro 1.0.0 depends on flutter any from sdk
    [   +1 ms] SLVR:                                 selecting carousel_pro 1.0.0
    [   +7 ms] SLVR:                                 fact: http 0.12.2 depends on http_parser >=0.0.1 <4.0.0
    [   +1 ms] SLVR:                                 fact: http 0.12.2 depends on path >=0.9.0 <2.0.0
    [        ] SLVR:                                 fact: http 0.12.2 depends on pedantic ^1.0.0
    [        ] SLVR:                                   selecting http 0.12.2
    [        ] SLVR:                                   derived: pedantic ^1.0.0
    [        ] SLVR:                                   derived: http_parser >=0.0.1 <4.0.0
    [   +4 ms] SLVR:                                     selecting cupertino_icons 0.1.3
    [   +8 ms] SLVR:                                     fact: flutter 0.0.0 from sdk depends on characters 1.0.0
    [        ] SLVR:                                     fact: flutter 0.0.0 from sdk depends on collection 1.14.13
    [        ] SLVR:                                     fact: flutter 0.0.0 from sdk depends on meta 1.1.8
    [        ] SLVR:                                     fact: flutter 0.0.0 from sdk depends on typed_data 1.2.0
    [        ] SLVR:                                     fact: flutter 0.0.0 from sdk depends on vector_math 2.0.8
    [        ] SLVR:                                     fact: flutter 0.0.0 from sdk depends on sky_engine any from sdk
    [   +1 ms] SLVR:                                       selecting flutter 0.0.0 from sdk
    [   +1 ms] SLVR:                                       derived: sky_engine any from sdk
    [   +2 ms] SLVR:                                       fact: typed_data 1.2.0 depends on collection ^1.1.0
    [        ] SLVR:                                         selecting typed_data 1.2.0
    [   +3 ms] SLVR:                                           selecting term_glyph 1.1.0
    [   +5 ms] SLVR:                                           fact: string_scanner 1.0.5 depends on charcode ^1.1.0
    [   +2 ms] SLVR:                                           fact: string_scanner 1.0.5 depends on meta ^1.1.0
    [        ] SLVR:                                           fact: string_scanner 1.0.5 depends on source_span ^1.4.0
    [        ] SLVR:                                             selecting string_scanner 1.0.5
    [   +3 ms] SLVR:                                             fact: stream_channel 2.0.0 depends on async >=1.11.0 <3.0.0
    [        ] SLVR:                                               selecting stream_channel 2.0.0
    [   +3 ms] SLVR:                                               fact: source_span 1.7.0 depends on charcode ^1.0.0
    [   +1 ms] SLVR:                                               fact: source_span 1.7.0 depends on collection ^1.8.0
    [        ] SLVR:                                               fact: source_span 1.7.0 depends on meta >=0.9.0 <2.0.0
    [        ] SLVR:                                               fact: source_span 1.7.0 depends on path ^1.2.0
    [        ] SLVR:                                               fact: source_span 1.7.0 depends on term_glyph ^1.0.0
    [        ] SLVR:                                                 selecting source_span 1.7.0
    [   +2 ms] SLVR:                                                   selecting meta 1.1.8
    [   +5 ms] SLVR:                                                   fact: matcher 0.12.8 depends on stack_trace ^1.2.0
    [        ] SLVR:                                                     selecting matcher 0.12.8
    [   +4 ms] SLVR:                                                       selecting collection 1.14.13
    [   +5 ms] SLVR:                                                         selecting charcode 1.1.3
    [   +5 ms] SLVR:                                                           selecting characters 1.0.0
    [   +5 ms] SLVR:                                                           fact: boolean_selector 2.0.0 depends on source_span ^1.0.0
    [        ] SLVR:                                                           fact: boolean_selector 2.0.0 depends on string_scanner ^1.0.0
    [        ] SLVR:                                                             selecting boolean_selector 2.0.0
    [   +3 ms] SLVR:                                                             fact: async 2.4.2 depends on collection ^1.5.0
    [        ] SLVR:                                                               selecting async 2.4.2
    [   +2 ms] SLVR:                                                                 selecting vector_math 2.0.8
    [   +3 ms] SLVR:                                                                 fact: stack_trace 1.9.5 depends on path ^1.2.0
    [        ] SLVR:                                                                   selecting stack_trace 1.9.5
    [   +2 ms] SLVR:                                                                   fact: clock 1.0.1 depends on meta >=0.9.0 <2.0.0
    [        ] SLVR:                                                                     selecting clock 1.0.1
    [   +3 ms] SLVR:                                                                     fact: fake_async 1.1.0 depends on clock ^1.0.0
    [        ] SLVR:                                                                     fact: fake_async 1.1.0 depends on collection ^1.8.0
    [        ] SLVR:                                                                       selecting fake_async 1.1.0
    [   +2 ms] SLVR:                                                                         selecting path 1.7.0
    [   +4 ms] SLVR:                                                                         fact: test_api 0.2.17 depends on async ^2.0.0
    [        ] SLVR:                                                                         fact: test_api 0.2.17 depends on boolean_selector >=1.0.0 <3.0.0
    [        ] SLVR:                                                                         fact: test_api 0.2.17 depends on collection ^1.8.0
    [        ] SLVR:                                                                         fact: test_api 0.2.17 depends on meta ^1.1.5
    [        ] SLVR:                                                                         fact: test_api 0.2.17 depends on path ^1.2.0
    [        ] SLVR:                                                                         fact: test_api 0.2.17 depends on source_span ^1.4.0
    [        ] SLVR:                                                                         fact: test_api 0.2.17 depends on stack_trace ^1.9.0
    [        ] SLVR:                                                                         fact: test_api 0.2.17 depends on stream_channel >=1.7.0 <3.0.0
    [   +2 ms] SLVR:                                                                         fact: test_api 0.2.17 depends on string_scanner ^1.0.0
    [        ] SLVR:                                                                         fact: test_api 0.2.17 depends on term_glyph ^1.0.0
    [        ] SLVR:                                                                         fact: test_api 0.2.17 depends on matcher >=0.12.6 <0.12.9
    [        ] SLVR:                                                                           selecting test_api 0.2.17
    [        ] SLVR:                                                                           fact: flutter_cache_manager 1.4.1 depends on flutter any from sdk
    [        ] SLVR:                                                                           fact: flutter_cache_manager 1.4.1 depends on path_provider ^1.4.0
    [        ] SLVR:                                                                           fact: flutter_cache_manager 1.4.1 depends on uuid ^2.0.2
    [        ] SLVR:                                                                           fact: flutter_cache_manager 1.4.1 depends on http ^0.12.0+2
    [        ] SLVR:                                                                           fact: flutter_cache_manager 1.4.1 depends on path ^1.6.4
    [        ] SLVR:                                                                           fact: flutter_cache_manager 1.4.1 depends on sqflite ^1.1.7+2
    [        ] SLVR:                                                                           fact: flutter_cache_manager 1.4.1 depends on pedantic ^1.8.0+1
    [        ] SLVR:                                                                           fact: flutter_cache_manager 1.4.1 depends on clock ^1.0.1
    [        ] SLVR:                                                                           fact: flutter_cache_manager 1.4.1 depends on file ^5.1.0
    [        ] SLVR:                                                                           fact: flutter_cache_manager 1.4.1 depends on rxdart >=0.23.1 <0.25.0
    [        ] SLVR:                                                                             selecting flutter_cache_manager 1.4.1
    [        ] SLVR:                                                                             derived: rxdart >=0.23.1 <0.25.0
    [        ] SLVR:                                                                             derived: file ^5.1.0
    [        ] SLVR:                                                                             derived: pedantic ^1.8.0+1
    [        ] SLVR:                                                                             derived: uuid ^2.0.2
    [        ] SLVR:                                                                             fact: nested 0.0.4 depends on flutter any from sdk
    [        ] SLVR:                                                                               selecting nested 0.0.4
    [   +7 ms] SLVR:                                                                               fact: path_provider_linux 0.0.1+2 depends on path ^1.6.4
    [        ] SLVR:                                                                               fact: path_provider_linux 0.0.1+2 depends on xdg_directories ^0.1.0
    [        ] SLVR:                                                                               fact: path_provider_linux 0.0.1+2 depends on path_provider_platform_interface ^1.0.1
    [   +3 ms] SLVR:                                                                               fact: path_provider_linux 0.0.1+2 depends on flutter any from sdk
    [        ] SLVR:                                                                                 selecting path_provider_linux 0.0.1+2
    [        ] SLVR:                                                                                 derived: xdg_directories ^0.1.0
    [        ] SLVR:                                                                                 fact: path_provider_macos 0.0.4+3 depends on flutter any from sdk
    [        ] SLVR:                                                                                   selecting path_provider_macos 0.0.4+3
    [   +1 ms] SLVR:                                                                                   fact: path_provider_platform_interface 1.0.2 depends on flutter any from sdk
    [   +2 ms] SLVR:                                                                                   fact: path_provider_platform_interface 1.0.2 depends on meta ^1.0.5
    [   +1 ms] SLVR:                                                                                   fact: path_provider_platform_interface 1.0.2 depends on platform ^2.0.0
    [        ] SLVR:                                                                                   fact: path_provider_platform_interface 1.0.2 depends on plugin_platform_interface
    ^1.0.1
    [   +3 ms] SLVR:                                                                                     selecting path_provider_platform_interface 1.0.2
    [        ] SLVR:                                                                                     derived: plugin_platform_interface ^1.0.1
    [        ] SLVR:                                                                                     derived: platform ^2.0.0
    [        ] SLVR:                                                                                     fact: sqflite_common 1.0.2+1 depends on synchronized >=2.0.2 <4.0.0
    [        ] SLVR:                                                                                     fact: sqflite_common 1.0.2+1 depends on path >=1.5.1 <3.0.0
    [        ] SLVR:                                                                                     fact: sqflite_common 1.0.2+1 depends on meta >=1.1.8 <3.0.0
    [        ] SLVR:                                                                                       selecting sqflite_common 1.0.2+1
    [        ] SLVR:                                                                                       derived: synchronized >=2.0.2 <4.0.0
    [        ] SLVR:                                                                                       fact: xml 4.2.0 depends on collection ^1.14.0
    [        ] SLVR:                                                                                       fact: xml 4.2.0 depends on convert ^2.1.0
    [        ] SLVR:                                                                                       fact: xml 4.2.0 depends on meta ^1.1.0
    [   +2 ms] SLVR:                                                                                       fact: xml 4.2.0 depends on petitparser ^3.0.0
    [        ] SLVR:                                                                                         selecting xml 4.2.0
    [   +2 ms] SLVR:                                                                                         derived: petitparser ^3.0.0
    [        ] SLVR:                                                                                         derived: convert ^2.1.0
    [        ] SLVR:                                                                                         fact: path_drawing 0.4.1 depends on vector_math ^2.0.6
    [        ] SLVR:                                                                                         fact: path_drawing 0.4.1 depends on meta ^1.1.2
    [        ] SLVR:                                                                                         fact: path_drawing 0.4.1 depends on path_parsing ^0.1.4
    [        ] SLVR:                                                                                         fact: path_drawing 0.4.1 depends on flutter any from sdk
    [        ] SLVR:                                                                                           selecting path_drawing 0.4.1
    [        ] SLVR:                                                                                           derived: path_parsing ^0.1.4
    [        ] SLVR:                                                                                             selecting xmlstream 0.11.1
    [        ] SLVR:                                                                                               selecting pedantic 1.9.0
    [        ] SLVR:                                                                                               fact: http_parser 3.1.4 depends on charcode ^1.1.0
    [        ] SLVR:                                                                                               fact: http_parser 3.1.4 depends on collection >=0.9.1 <2.0.0
    [        ] SLVR:                                                                                               fact: http_parser 3.1.4 depends on source_span ^1.0.0
    [   +2 ms] SLVR:                                                                                               fact: http_parser 3.1.4 depends on string_scanner >=0.0.0 <2.0.0
    [   +1 ms] SLVR:                                                                                               fact: http_parser 3.1.4 depends on typed_data ^1.1.0
    [   +1 ms] SLVR:                                                                                                 selecting http_parser 3.1.4
    [        ] SLVR:                                                                                                   selecting sky_engine 0.0.99 from sdk
    [   +1 ms] SLVR:                                                                                                     selecting rxdart 0.24.1
    [   +4 ms] SLVR:                                                                                                     fact: file 5.2.1 depends on intl >=0.14.0 <1.0.0
    [        ] SLVR:                                                                                                     fact: file 5.2.1 depends on meta ^1.1.2
    [        ] SLVR:                                                                                                     fact: file 5.2.1 depends on path ^1.5.1
    [        ] SLVR:                                                                                                       selecting file 5.2.1
    [        ] SLVR:                                                                                                       derived: intl >=0.14.0 <1.0.0
    [   +2 ms] SLVR:                                                                                                       fact: uuid 2.2.0 depends on crypto ^2.0.0
    [   +1 ms] SLVR:                                                                                                       fact: uuid 2.2.0 depends on convert ^2.0.0
    [        ] SLVR:                                                                                                         selecting uuid 2.2.0
    [        ] SLVR:                                                                                                         derived: crypto ^2.0.0
    [   +2 ms] SLVR:                                                                                                         fact: xdg_directories 0.1.0 depends on path ^1.6.4
    [   +1 ms] SLVR:                                                                                                         fact: xdg_directories 0.1.0 depends on process ^3.0.12
    [        ] SLVR:                                                                                                         fact: xdg_directories 0.1.0 depends on flutter any from sdk
    [   +1 ms] SLVR:                                                                                                           selecting xdg_directories 0.1.0
    [        ] SLVR:                                                                                                           derived: process ^3.0.12
    [        ] SLVR:                                                                                                           fact: plugin_platform_interface 1.0.2 depends on meta ^1.0.0
    [        ] SLVR:                                                                                                             selecting plugin_platform_interface 1.0.2
    [   +3 ms] SLVR:                                                                                                               selecting platform 2.2.1
    [   +2 ms] SLVR:                                                                                                                 selecting synchronized 2.2.0+2
    [   +2 ms] SLVR:                                                                                                                 fact: petitparser 3.0.4 depends on meta ^1.1.0
    [        ] SLVR:                                                                                                                   selecting petitparser 3.0.4
    [   +1 ms] SLVR:                                                                                                                   fact: convert 2.1.1 depends on charcode ^1.1.0
    [        ] SLVR:                                                                                                                   fact: convert 2.1.1 depends on typed_data ^1.1.0
    [        ] SLVR:                                                                                                                     selecting convert 2.1.1
    [        ] SLVR:                                                                                                                     fact: path_parsing 0.1.4 depends on vector_math
    ^2.0.6
    [   +1 ms] SLVR:                                                                                                                     fact: path_parsing 0.1.4 depends on meta ^1.1.2
    [        ] SLVR:                                                                                                                       selecting path_parsing 0.1.4
    [        ] SLVR:                                                                                                                       fact: intl 0.16.1 depends on path >=0.9.0 <2.0.0
    [   +3 ms] SLVR:                                                                                                                         selecting intl 0.16.1
    [   +1 ms] SLVR:                                                                                                                         fact: crypto 2.1.5 depends on collection ^1.0.0
    [   +1 ms] SLVR:                                                                                                                         fact: crypto 2.1.5 depends on convert >=1.0.0
    <3.0.0
    [   +4 ms] SLVR:                                                                                                                         fact: crypto 2.1.5 depends on typed_data ^1.0.0
    [   +1 ms] SLVR:                                                                                                                           selecting crypto 2.1.5
    [   +1 ms] SLVR:                                                                                                                           fact: process 3.0.13 depends on file ^5.0.0
    [   +1 ms] SLVR:                                                                                                                           fact: process 3.0.13 depends on intl >=0.14.0
    <0.17.0
    [        ] SLVR:                                                                                                                           fact: process 3.0.13 depends on meta ^1.1.2
    [        ] SLVR:                                                                                                                           fact: process 3.0.13 depends on path ^1.5.1
    [   +3 ms] SLVR:                                                                                                                           fact: process 3.0.13 depends on platform
    >=1.0.1
    [   +1 ms] SLVR:                                                                                                                             selecting process 3.0.13
    [        ] SLVR: Version solving took 0:00:00.489214 seconds.
    [        ]     | Tried 1 solutions.
    [        ] FINE: Resolving dependencies finished (0.550s).
    [  +77 ms] IO  : Writing 9826 characters to text file .\pubspec.lock.
    [   +1 ms] FINE: Contents:
    [        ]     | # 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.4.2"
    [        ]     |   badges:
    [        ]     |     dependency: "direct main"
    [        ]     |     description:
    [        ]     |       name: badges
    [        ]     |       url: "https://pub.dartlang.org"
    [        ]     |     source: hosted
    [        ]     |     version: "1.1.1"
    [   +1 ms]     |   bloc:
    [   +1 ms]     |     dependency: "direct main"
    [        ]     |     description:
    [        ]     |       name: bloc
    [        ]     |       url: "https://pub.dartlang.org"
    [        ]     |     source: hosted
    [        ]     |     version: "4.0.0"
    [        ]     |   boolean_selector:
    [        ]     |     dependency: transitive
    [        ]     |     description:
    [        ]     |       name: boolean_selector
    [        ]     |       url: "https://pub.dartlang.org"
    [        ]     |     source: hosted
    [        ]     |     version: "2.0.0"
    [        ]     |   cached_network_image:
    [        ]     |     dependency: "direct main"
    [        ]     |     description:
    [        ]     |       name: cached_network_image
    [        ]     |       url: "https://pub.dartlang.org"
    [        ]     |     source: hosted
    [        ]     |     version: "2.2.0+1"
    [        ]     |   carousel_pro:
    [        ]     |     dependency: "direct main"
    [        ]     |     description:
    [        ]     |       name: carousel_pro
    [        ]     |       url: "https://pub.dartlang.org"
    [        ]     |     source: hosted
    [        ]     |     version: "1.0.0"
    [        ]     |   characters:
    [   +1 ms]     |     dependency: transitive
    [        ]     |     description:
    [        ]     |       name: characters
    [        ]     |       url: "https://pub.dartlang.org"
    [        ]     |     source: hosted
    [        ]     |     version: "1.0.0"
    [        ]     |   charcode:
    [        ]     |     dependency: transitive
    [        ]     |     description:
    [        ]     |       name: charcode
    [        ]     |       url: "https://pub.dartlang.org"
    [        ]     |     source: hosted
    [        ]     |     version: "1.1.3"
    [        ]     |   clip_shadow:
    [        ]     |     dependency: "direct main"
    [        ]     |     description:
    [        ]     |       name: clip_shadow
    [        ]     |       url: "https://pub.dartlang.org"
    [        ]     |     source: hosted
    [        ]     |     version: "0.2.1"
    [        ]     |   clock:
    [        ]     |     dependency: transitive
    [        ]     |     description:
    [        ]     |       name: clock
    [        ]     |       url: "https://pub.dartlang.org"
    [        ]     |     source: hosted
    [        ]     |     version: "1.0.1"
    [        ]     |   collection:
    [        ]     |     dependency: transitive
    [        ]     |     description:
    [        ]     |       name: collection
    [   +2 ms]     |       url: "https://pub.dartlang.org"
    [   +3 ms]     |     source: hosted
    [        ]     |     version: "1.14.13"
    [        ]     |   convert:
    [        ]     |     dependency: transitive
    [        ]     |     description:
    [        ]     |       name: convert
    [        ]     |       url: "https://pub.dartlang.org"
    [   +6 ms]     |     source: hosted
    [        ]     |     version: "2.1.1"
    [   +3 ms]     |   crypto:
    [        ]     |     dependency: transitive
    [        ]     |     description:
    [        ]     |       name: crypto
    [        ]     |       url: "https://pub.dartlang.org"
    [        ]     |     source: hosted
    [        ]     |     version: "2.1.5"
    [        ]     |   cupertino_icons:
    [        ]     |     dependency: "direct main"
    [        ]     |     description:
    [        ]     |       name: cupertino_icons
    [        ]     |       url: "https://pub.dartlang.org"
    [        ]     |     source: hosted
    [        ]     |     version: "0.1.3"
    [        ]     |   device_info:
    [        ]     |     dependency: "direct main"
    [        ]     |     description:
    [        ]     |       name: device_info
    [        ]     |       url: "https://pub.dartlang.org"
    [        ]     |     source: hosted
    [        ]     |     version: "0.4.2+4"
    [        ]     |   equatable:
    [        ]     |     dependency: "direct main"
    [        ]     |     description:
    [        ]     |       name: equatable
    [   +5 ms]     |       url: "https://pub.dartlang.org"
    [        ]     |     source: hosted
    [        ]     |     version: "1.2.3"
    [        ]     |   fake_async:
    [        ]     |     dependency: transitive
    [        ]     |     description:
    [        ]     |       name: fake_async
    [        ]     |       url: "https://pub.dartlang.org"
    [        ]     |     source: hosted
    [        ]     |     version: "1.1.0"
    [        ]     |   file:
    [        ]     |     dependency: transitive
    [        ]     |     description:
    [        ]     |       name: file
    [        ]     |       url: "https://pub.dartlang.org"
    [        ]     |     source: hosted
    [        ]     |     version: "5.2.1"
    [        ]     |   flutter:
    [        ]     |     dependency: "direct main"
    [        ]     |     description: flutter
    [        ]     |     source: sdk
    [        ]     |     version: "0.0.0"
    [        ]     |   flutter_bloc:
    [        ]     |     dependency: "direct main"
    [   +1 ms]     |     description:
    [        ]     |       name: flutter_bloc
    [        ]     |       url: "https://pub.dartlang.org"
    [        ]     |     source: hosted
    [   +1 ms]     |     version: "4.0.1"
    [        ]     |   flutter_cache_manager:
    [        ]     |     dependency: transitive
    [        ]     |     description:
    [        ]     |       name: flutter_cache_manager
    [        ]     |       url: "https://pub.dartlang.org"
    [        ]     |     source: hosted
    [        ]     |     version: "1.4.1"
    [        ]     |   flutter_icons:
    [        ]     |     dependency: "direct main"
    [        ]     |     description:
    [        ]     |       name: flutter_icons
    [        ]     |       url: "https://pub.dartlang.org"
    [        ]     |     source: hosted
    [        ]     |     version: "1.1.0"
    [        ]     |   flutter_svg:
    [        ]     |     dependency: "direct main"
    [        ]     |     description:
    [        ]     |       name: flutter_svg
    [        ]     |       url: "https://pub.dartlang.org"
    [        ]     |     source: hosted
    [        ]     |     version: "0.18.0"
    [        ]     |   flutter_test:
    [        ]     |     dependency: "direct dev"
    [        ]     |     description: flutter
    [   +1 ms]     |     source: sdk
    [   +1 ms]     |     version: "0.0.0"
    [        ]     |   http:
    [        ]     |     dependency: "direct main"
    [        ]     |     description:
    [        ]     |       name: http
    [        ]     |       url: "https://pub.dartlang.org"
    [        ]     |     source: hosted
    [        ]     |     version: "0.12.2"
    [        ]     |   http_parser:
    [        ]     |     dependency: transitive
    [        ]     |     description:
    [        ]     |       name: http_parser
    [        ]     |       url: "https://pub.dartlang.org"
    [        ]     |     source: hosted
    [        ]     |     version: "3.1.4"
    [        ]     |   intl:
    [        ]     |     dependency: transitive
    [        ]     |     description:
    [        ]     |       name: intl
    [        ]     |       url: "https://pub.dartlang.org"
    [        ]     |     source: hosted
    [        ]     |     version: "0.16.1"
    [        ]     |   matcher:
    [        ]     |     dependency: transitive
    [        ]     |     description:
    [        ]     |       name: matcher
    [   +1 ms]     |       url: "https://pub.dartlang.org"
    [        ]     |     source: hosted
    [        ]     |     version: "0.12.8"
    [        ]     |   meta:
    [        ]     |     dependency: transitive
    [        ]     |     description:
    [        ]     |       name: meta
    [        ]     |       url: "https://pub.dartlang.org"
    [        ]     |     source: hosted
    [        ]     |     version: "1.1.8"
    [        ]     |   nested:
    [        ]     |     dependency: transitive
    [        ]     |     description:
    [        ]     |       name: nested
    [        ]     |       url: "https://pub.dartlang.org"
    [        ]     |     source: hosted
    [        ]     |     version: "0.0.4"
    [        ]     |   path:
    [        ]     |     dependency: transitive
    [        ]     |     description:
    [        ]     |       name: path
    [        ]     |       url: "https://pub.dartlang.org"
    [        ]     |     source: hosted
    [        ]     |     version: "1.7.0"
    [        ]     |   path_drawing:
    [        ]     |     dependency: transitive
    [        ]     |     description:
    [        ]     |       name: path_drawing
    [        ]     |       url: "https://pub.dartlang.org"
    [        ]     |     source: hosted
    [        ]     |     version: "0.4.1"
    [   +1 ms]     |   path_parsing:
    [   +2 ms]     |     dependency: transitive
    [   +1 ms]     |     description:
    [        ]     |       name: path_parsing
    [        ]     |       url: "https://pub.dartlang.org"
    [        ]     |     source: hosted
    [        ]     |     version: "0.1.4"
    [        ]     |   path_provider:
    [        ]     |     dependency: "direct main"
    [        ]     |     description:
    [        ]     |       name: path_provider
    [        ]     |       url: "https://pub.dartlang.org"
    [        ]     |     source: hosted
    [        ]     |     version: "1.6.11"
    [        ]     |   path_provider_linux:
    [        ]     |     dependency: transitive
    [        ]     |     description:
    [        ]     |       name: path_provider_linux
    [        ]     |       url: "https://pub.dartlang.org"
    [        ]     |     source: hosted
    [        ]     |     version: "0.0.1+2"
    [        ]     |   path_provider_macos:
    [        ]     |     dependency: transitive
    [        ]     |     description:
    [        ]     |       name: path_provider_macos
    [   +2 ms]     |       url: "https://pub.dartlang.org"
    [        ]     |     source: hosted
    [        ]     |     version: "0.0.4+3"
    [        ]     |   path_provider_platform_interface:
    [        ]     |     dependency: transitive
    [        ]     |     description:
    [        ]     |       name: path_provider_platform_interface
    [        ]     |       url: "https://pub.dartlang.org"
    [        ]     |     source: hosted
    [        ]     |     version: "1.0.2"
    [        ]     |   pedantic:
    [        ]     |     dependency: transitive
    [        ]     |     description:
    [        ]     |       name: pedantic
    [        ]     |       url: "https://pub.dartlang.org"
    [        ]     |     source: hosted
    [        ]     |     version: "1.9.0"
    [        ]     |   petitparser:
    [        ]     |     dependency: transitive
    [        ]     |     description:
    [        ]     |       name: petitparser
    [        ]     |       url: "https://pub.dartlang.org"
    [        ]     |     source: hosted
    [        ]     |     version: "3.0.4"
    [        ]     |   platform:
    [        ]     |     dependency: transitive
    [        ]     |     description:
    [        ]     |       name: platform
    [        ]     |       url: "https://pub.dartlang.org"
    [   +1 ms]     |     source: hosted
    [   +1 ms]     |     version: "2.2.1"
    [        ]     |   plugin_platform_interface:
    [        ]     |     dependency: transitive
    [        ]     |     description:
    [        ]     |       name: plugin_platform_interface
    [        ]     |       url: "https://pub.dartlang.org"
    [        ]     |     source: hosted
    [        ]     |     version: "1.0.2"
    [        ]     |   process:
    [        ]     |     dependency: transitive
    [        ]     |     description:
    [        ]     |       name: process
    [   +2 ms]     |       url: "https://pub.dartlang.org"
    [   +1 ms]     |     source: hosted
    [        ]     |     version: "3.0.13"
    [        ]     |   provider:
    [        ]     |     dependency: "direct main"
    [        ]     |     description:
    [        ]     |       name: provider
    [        ]     |       url: "https://pub.dartlang.org"
    [   +2 ms]     |     source: hosted
    [        ]     |     version: "4.3.1"
    [        ]     |   rxdart:
    [        ]     |     dependency: transitive
    [        ]     |     description:
    [        ]     |       name: rxdart
    [        ]     |       url: "https://pub.dartlang.org"
    [        ]     |     source: hosted
    [        ]     |     version: "0.24.1"
    [        ]     |   sky_engine:
    [        ]     |     dependency: transitive
    [        ]     |     description: flutter
    [        ]     |     source: sdk
    [        ]     |     version: "0.0.99"
    [        ]     |   source_span:
    [   +1 ms]     |     dependency: transitive
    [        ]     |     description:
    [        ]     |       name: source_span
    [        ]     |       url: "https://pub.dartlang.org"
    [        ]     |     source: hosted
    [        ]     |     version: "1.7.0"
    [        ]     |   sqflite:
    [        ]     |     dependency: "direct main"
    [        ]     |     description:
    [        ]     |       name: sqflite
    [   +1 ms]     |       url: "https://pub.dartlang.org"
    [   +2 ms]     |     source: hosted
    [        ]     |     version: "1.3.1"
    [        ]     |   sqflite_common:
    [        ]     |     dependency: transitive
    [        ]     |     description:
    [        ]     |       name: sqflite_common
    [        ]     |       url: "https://pub.dartlang.org"
    [        ]     |     source: hosted
    [        ]     |     version: "1.0.2+1"
    [        ]     |   stack_trace:
    [        ]     |     dependency: transitive
    [   +1 ms]     |     description:
    [        ]     |       name: stack_trace
    [        ]     |       url: "https://pub.dartlang.org"
    [        ]     |     source: hosted
    [        ]     |     version: "1.9.5"
    [        ]     |   stream_channel:
    [        ]     |     dependency: transitive
    [   +2 ms]     |     description:
    [        ]     |       name: stream_channel
    [        ]     |       url: "https://pub.dartlang.org"
    [        ]     |     source: hosted
    [        ]     |     version: "2.0.0"
    [        ]     |   string_scanner:
    [        ]     |     dependency: transitive
    [        ]     |     description:
    [        ]     |       name: string_scanner
    [        ]     |       url: "https://pub.dartlang.org"
    [        ]     |     source: hosted
    [        ]     |     version: "1.0.5"
    [        ]     |   styled_text:
    [        ]     |     dependency: "direct main"
    [        ]     |     description:
    [        ]     |       name: styled_text
    [        ]     |       url: "https://pub.dartlang.org"
    [        ]     |     source: hosted
    [        ]     |     version: "1.0.1+1"
    [        ]     |   synchronized:
    [   +1 ms]     |     dependency: transitive
    [        ]     |     description:
    [        ]     |       name: synchronized
    [        ]     |       url: "https://pub.dartlang.org"
    [   +2 ms]     |     source: hosted
    [   +2 ms]     |     version: "2.2.0+2"
    [        ]     |   term_glyph:
    [        ]     |     dependency: transitive
    [        ]     |     description:
    [        ]     |       name: term_glyph
    [        ]     |       url: "https://pub.dartlang.org"
    [        ]     |     source: hosted
    [        ]     |     version: "1.1.0"
    [        ]     |   test_api:
    [        ]     |     dependency: transitive
    [        ]     |     description:
    [        ]     |       name: test_api
    [        ]     |       url: "https://pub.dartlang.org"
    [   +1 ms]     |     source: hosted
    [   +7 ms]     |     version: "0.2.17"
    [        ]     |   typed_data:
    [        ]     |     dependency: transitive
    [        ]     |     description:
    [        ]     |       name: typed_data
    [        ]     |       url: "https://pub.dartlang.org"
    [        ]     |     source: hosted
    [        ]     |     version: "1.2.0"
    [        ]     |   uuid:
    [        ]     |     dependency: transitive
    [   +4 ms]     |     description:
    [   +2 ms]     |       name: uuid
    [        ]     |       url: "https://pub.dartlang.org"
    [        ]     |     source: hosted
    [        ]     |     version: "2.2.0"
    [   +1 ms]     |   vector_math:
    [        ]     |     dependency: transitive
    [        ]     |     description:
    [   +1 ms]     |       name: vector_math
    [        ]     |       url: "https://pub.dartlang.org"
    [        ]     |     source: hosted
    [        ]     |     version: "2.0.8"
    [        ]     |   xdg_directories:
    [   +3 ms]     |     dependency: transitive
    [        ]     |     description:
    [        ]     |       name: xdg_directories
    [        ]     |       url: "https://pub.dartlang.org"
    [        ]     |     source: hosted
    [        ]     |     version: "0.1.0"
    [        ]     |   xml:
    [        ]     |     dependency: transitive
    [        ]     |     description:
    [        ]     |       name: xml
    [        ]     |       url: "https://pub.dartlang.org"
    [        ]     |     source: hosted
    [        ]     |     version: "4.2.0"
    [        ]     |   xmlstream:
    [        ]     |     dependency: transitive
    [        ]     |     description:
    [        ]     |       name: xmlstream
    [        ]     |       url: "https://pub.dartlang.org"
    [   +3 ms]     |     source: hosted
    [   +2 ms]     |     version: "0.11.1"
    [        ]     | sdks:
    [        ]     |   dart: ">=2.9.0-14.0.dev <3.0.0"
    [        ]     |   flutter: ">=1.18.0-6.0.pre <2.0.0"
    [   +1 ms] IO  : Writing 6097 characters to text file .\.packages.
    [   +1 ms] FINE: Contents:
    [        ]     | # Generated by pub on 2020-08-13 22:17:07.711244.
    [        ]     | async:file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/async-2.4.2/lib/
    [   +1 ms]     | badges:file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/badges-1.1.1/lib/
    [        ]     | bloc:file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/bloc-4.0.0/lib/
    [   +1 ms]     | boolean_selector:file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/boolean_selector-2.0.0/lib/
    [   +6 ms]     | cached_network_image:file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/cached_network_image-2.2.0+1/lib/
    [   +1 ms]     | carousel_pro:file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/carousel_pro-1.0.0/lib/
    [        ]     | characters:file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/characters-1.0.0/lib/
    [        ]     | charcode:file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/charcode-1.1.3/lib/
    [        ]     | clip_shadow:file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/clip_shadow-0.2.1/lib/
    [        ]     | clock:file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/clock-1.0.1/lib/
    [        ]     | collection:file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/collection-1.14.13/lib/
    [   +1 ms]     | convert:file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/convert-2.1.1/lib/
    [   +1 ms]     | crypto:file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/crypto-2.1.5/lib/
    [        ]     | cupertino_icons:file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/cupertino_icons-0.1.3/lib/
    [        ]     | device_info:file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/device_info-0.4.2+4/lib/
    [   +2 ms]     | equatable:file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/equatable-1.2.3/lib/
    [   +2 ms]     | fake_async:file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/fake_async-1.1.0/lib/
    [        ]     | file:file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/file-5.2.1/lib/
    [        ]     | flutter:file:///D:/DK_Projects/flutter/packages/flutter/lib/
    [        ]     | flutter_bloc:file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_bloc-4.0.1/lib/
    [        ]     | flutter_cache_manager:file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_cache_manager-1.4.1/lib/
    [   +1 ms]     | flutter_icons:file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_icons-1.1.0/lib/
    [        ]     | flutter_svg:file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_svg-0.18.0/lib/
    [        ]     | flutter_test:file:///D:/DK_Projects/flutter/packages/flutter_test/lib/
    [        ]     | http:file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/http-0.12.2/lib/
    [        ]     | http_parser:file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/http_parser-3.1.4/lib/
    [        ]     | intl:file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/intl-0.16.1/lib/
    [        ]     | matcher:file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/matcher-0.12.8/lib/
    [        ]     | meta:file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/meta-1.1.8/lib/
    [        ]     | nested:file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/nested-0.0.4/lib/
    [   +3 ms]     | path:file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/path-1.7.0/lib/
    [   +1 ms]     | path_drawing:file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/path_drawing-0.4.1/lib/
    [   +3 ms]     | path_parsing:file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/path_parsing-0.1.4/lib/
    [        ]     | path_provider:file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider-1.6.11/lib/
    [        ]     | path_provider_linux:file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider_linux-0.0.1+2/lib/
    [        ]     | path_provider_macos:file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider_macos-0.0.4+3/lib/
    [        ]     | path_provider_platform_interface:file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider_platform_interface-1.0.2/lib/
    [        ]     | pedantic:file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/pedantic-1.9.0/lib/
    [        ]     | petitparser:file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/petitparser-3.0.4/lib/
    [        ]     | platform:file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/platform-2.2.1/lib/
    [        ]     | plugin_platform_interface:file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/plugin_platform_interface-1.0.2/lib/
    [        ] MSG : Got dependencies!
    [   +2 ms]     | process:file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/process-3.0.13/lib/
    [        ]     | provider:file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/provider-4.3.1/lib/
    [        ]     | rxdart:file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/rxdart-0.24.1/lib/
    [        ]     | sky_engine:file:///D:/DK_Projects/flutter/bin/cache/pkg/sky_engine/lib/
    [        ]     | source_span:file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/source_span-1.7.0/lib/
    [   +1 ms]     | sqflite:file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/sqflite-1.3.1/lib/
    [   +2 ms]     | sqflite_common:file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/sqflite_common-1.0.2+1/lib/
    [        ]     | stack_trace:file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/stack_trace-1.9.5/lib/
    [        ]     | stream_channel:file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/stream_channel-2.0.0/lib/
    [        ]     | string_scanner:file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/string_scanner-1.0.5/lib/
    [   +5 ms]     | styled_text:file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/styled_text-1.0.1+1/lib/
    [   +2 ms]     | synchronized:file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/synchronized-2.2.0+2/lib/
    [        ]     | term_glyph:file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/term_glyph-1.1.0/lib/
    [        ]     | test_api:file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/test_api-0.2.17/lib/
    [        ]     | typed_data:file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/typed_data-1.2.0/lib/
    [        ]     | uuid:file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/uuid-2.2.0/lib/
    [   +1 ms]     | vector_math:file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/vector_math-2.0.8/lib/
    [   +1 ms]     | xdg_directories:file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/xdg_directories-0.1.0/lib/
    [        ]     | xml:file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/xml-4.2.0/lib/
    [        ]     | xmlstream:file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/xmlstream-0.11.1/lib/
    [        ]     | lomaysowda:lib/
    [   +2 ms] IO  : Writing 12649 characters to text file .\.dart_tool\package_config.json.
    [   +1 ms] FINE: Contents:
    [        ]     | {
    [   +7 ms]     |   "configVersion": 2,
    [   +5 ms]     |   "packages": [
    [   +9 ms]     |     {
    [   +4 ms]     |       "name": "async",
    [        ]     |       "rootUri": "file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/async-2.4.2",
    [        ]     |       "packageUri": "lib/",
    [        ]     |       "languageVersion": "2.2"
    [        ]     |     },
    [        ]     |     {
    [        ]     |       "name": "badges",
    [        ]     |       "rootUri": "file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/badges-1.1.1",
    [   +2 ms]     |       "packageUri": "lib/",
    [        ]     |       "languageVersion": "2.2"
    [        ]     |     },
    [        ]     |     {
    [   +6 ms]     |       "name": "bloc",
    [   +1 ms]     |       "rootUri": "file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/bloc-4.0.0",
    [   +1 ms]     |       "packageUri": "lib/",
    [   +4 ms]     |       "languageVersion": "2.6"
    [   +1 ms]     |     },
    [        ]     |     {
    [        ]     |       "name": "boolean_selector",
    [        ]     |       "rootUri": "file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/boolean_selector-2.0.0",
    [        ]     |       "packageUri": "lib/",
    [        ]     |       "languageVersion": "2.4"
    [   +1 ms]     |     },
    [   +1 ms]     |     {
    [   +1 ms]     |       "name": "cached_network_image",
    [        ]     |       "rootUri": "file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/cached_network_image-2.2.0+1",
    [        ]     |       "packageUri": "lib/",
    [        ]     |       "languageVersion": "2.1"
    [        ]     |     },
    [   +1 ms]     |     {
    [   +5 ms]     |       "name": "carousel_pro",
    [   +1 ms]     |       "rootUri": "file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/carousel_pro-1.0.0",
    [        ]     |       "packageUri": "lib/",
    [   +1 ms]     |       "languageVersion": "2.0"
    [   +1 ms]     |     },
    [   +2 ms]     |     {
    [        ]     |       "name": "characters",
    [  +40 ms]     |       "rootUri": "file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/characters-1.0.0",
    [   +8 ms]     |       "packageUri": "lib/",
    [   +1 ms]     |       "languageVersion": "2.6"
    [   +2 ms]     |     },
    [        ]     |     {
    [        ]     |       "name": "charcode",
    [        ]     |       "rootUri": "file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/charcode-1.1.3",
    [   +1 ms]     |       "packageUri": "lib/",
    [   +1 ms]     |       "languageVersion": "2.0"
    [   +1 ms]     |     },
    [        ]     |     {
    [        ]     |       "name": "clip_shadow",
    [   +1 ms]     |       "rootUri": "file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/clip_shadow-0.2.1",
    [   +1 ms]     |       "packageUri": "lib/",
    [   +5 ms]     |       "languageVersion": "2.1"
    [   +2 ms]     |     },
    [        ]     |     {
    [        ]     |       "name": "clock",
    [        ]     |       "rootUri": "file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/clock-1.0.1",
    [        ]     |       "packageUri": "lib/",
    [   +4 ms]     |       "languageVersion": "2.0"
    [        ]     |     },
    [        ]     |     {
    [   +3 ms]     |       "name": "collection",
    [  +20 ms]     |       "rootUri": "file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/collection-1.14.13",
    [   +2 ms]     |       "packageUri": "lib/",
    [        ]     |       "languageVersion": "2.3"
    [        ]     |     },
    [        ]     |     {
    [        ]     |       "name": "convert",
    [        ]     |       "rootUri": "file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/convert-2.1.1",
    [   +1 ms]     |       "packageUri": "lib/",
    [   +2 ms]     |       "languageVersion": "1.17"
    [        ]     |     },
    [        ]     |     {
    [        ]     |       "name": "crypto",
    [        ]     |       "rootUri": "file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/crypto-2.1.5",
    [        ]     |       "packageUri": "lib/",
    [   +1 ms]     |       "languageVersion": "2.3"
    [        ]     |     },
    [        ]     |     {
    [        ]     |       "name": "cupertino_icons",
    [        ]     |       "rootUri": "file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/cupertino_icons-0.1.3",
    [        ]     |       "packageUri": "lib/",
    [        ]     |       "languageVersion": "2.0"
    [        ]     |     },
    [        ]     |     {
    [   +5 ms]     |       "name": "device_info",
    [   +1 ms]     |       "rootUri": "file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/device_info-0.4.2+4",
    [   +1 ms]     |       "packageUri": "lib/",
    [        ]     |       "languageVersion": "2.1"
    [        ]     |     },
    [        ]     |     {
    [        ]     |       "name": "equatable",
    [        ]     |       "rootUri": "file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/equatable-1.2.3",
    [        ]     |       "packageUri": "lib/",
    [        ]     |       "languageVersion": "2.0"
    [        ]     |     },
    [        ]     |     {
    [        ]     |       "name": "fake_async",
    [   +3 ms]     |       "rootUri": "file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/fake_async-1.1.0",
    [   +5 ms]     |       "packageUri": "lib/",
    [        ]     |       "languageVersion": "2.2"
    [        ]     |     },
    [        ]     |     {
    [   +1 ms]     |       "name": "file",
    [        ]     |       "rootUri": "file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/file-5.2.1",
    [        ]     |       "packageUri": "lib/",
    [        ]     |       "languageVersion": "2.2"
    [        ]     |     },
    [        ]     |     {
    [   +5 ms]     |       "name": "flutter",
    [   +1 ms]     |       "rootUri": "file:///D:/DK_Projects/flutter/packages/flutter",
    [   +1 ms]     |       "packageUri": "lib/",
    [        ]     |       "languageVersion": "2.9"
    [        ]     |     },
    [        ]     |     {
    [        ]     |       "name": "flutter_bloc",
    [        ]     |       "rootUri": "file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_bloc-4.0.1",
    [        ]     |       "packageUri": "lib/",
    [        ]     |       "languageVersion": "2.6"
    [        ]     |     },
    [        ]     |     {
    [        ]     |       "name": "flutter_cache_manager",
    [   +2 ms]     |       "rootUri": "file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_cache_manager-1.4.1",
    [   +3 ms]     |       "packageUri": "lib/",
    [        ]     |       "languageVersion": "2.6"
    [   +1 ms]     |     },
    [   +3 ms]     |     {
    [        ]     |       "name": "flutter_icons",
    [        ]     |       "rootUri": "file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_icons-1.1.0",
    [        ]     |       "packageUri": "lib/",
    [        ]     |       "languageVersion": "2.0"
    [        ]     |     },
    [        ]     |     {
    [   +2 ms]     |       "name": "flutter_svg",
    [   +1 ms]     |       "rootUri": "file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_svg-0.18.0",
    [   +3 ms]     |       "packageUri": "lib/",
    [        ]     |       "languageVersion": "2.2"
    [        ]     |     },
    [   +1 ms]     |     {
    [   +1 ms]     |       "name": "flutter_test",
    [        ]     |       "rootUri": "file:///D:/DK_Projects/flutter/packages/flutter_test",
    [        ]     |       "packageUri": "lib/",
    [        ]     |       "languageVersion": "2.2"
    [        ]     |     },
    [        ]     |     {
    [        ]     |       "name": "http",
    [        ]     |       "rootUri": "file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/http-0.12.2",
    [   +2 ms]     |       "packageUri": "lib/",
    [   +4 ms]     |       "languageVersion": "2.4"
    [        ]     |     },
    [        ]     |     {
    [   +6 ms]     |       "name": "http_parser",
    [        ]     |       "rootUri": "file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/http_parser-3.1.4",
    [   +3 ms]     |       "packageUri": "lib/",
    [        ]     |       "languageVersion": "2.3"
    [        ]     |     },
    [        ]     |     {
    [        ]     |       "name": "intl",
    [        ]     |       "rootUri": "file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/intl-0.16.1",
    [        ]     |       "packageUri": "lib/",
    [        ]     |       "languageVersion": "2.5"
    [   +1 ms]     |     },
    [        ]     |     {
    [        ]     |       "name": "matcher",
    [        ]     |       "rootUri": "file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/matcher-0.12.8",
    [        ]     |       "packageUri": "lib/",
    [        ]     |       "languageVersion": "2.4"
    [        ]     |     },
    [   +2 ms]     |     {
    [   +5 ms]     |       "name": "meta",
    [        ]     |       "rootUri": "file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/meta-1.1.8",
    [        ]     |       "packageUri": "lib/",
    [        ]     |       "languageVersion": "1.12"
    [        ]     |     },
    [        ]     |     {
    [        ]     |       "name": "nested",
    [        ]     |       "rootUri": "file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/nested-0.0.4",
    [        ]     |       "packageUri": "lib/",
    [        ]     |       "languageVersion": "2.2"
    [        ]     |     },
    [   +4 ms]     |     {
    [        ]     |       "name": "path",
    [        ]     |       "rootUri": "file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/path-1.7.0",
    [        ]     |       "packageUri": "lib/",
    [        ]     |       "languageVersion": "2.0"
    [        ]     |     },
    [        ]     |     {
    [        ]     |       "name": "path_drawing",
    [        ]     |       "rootUri": "file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/path_drawing-0.4.1",
    [        ]     |       "packageUri": "lib/",
    [        ]     |       "languageVersion": "1.19"
    [   +1 ms]     |     },
    [        ]     |     {
    [        ]     |       "name": "path_parsing",
    [        ]     |       "rootUri": "file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/path_parsing-0.1.4",
    [   +2 ms]     |       "packageUri": "lib/",
    [   +2 ms]     |       "languageVersion": "1.19"
    [   +5 ms]     |     },
    [        ]     |     {
    [        ]     |       "name": "path_provider",
    [   +2 ms]     |       "rootUri": "file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider-1.6.11",
    [        ]     |       "packageUri": "lib/",
    [   +6 ms]     |       "languageVersion": "2.1"
    [        ]     |     },
    [        ]     |     {
    [        ]     |       "name": "path_provider_linux",
    [        ]     |       "rootUri": "file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider_linux-0.0.1+2",
    [        ]     |       "packageUri": "lib/",
    [        ]     |       "languageVersion": "2.1"
    [        ]     |     },
    [        ]     |     {
    [        ]     |       "name": "path_provider_macos",
    [        ]     |       "rootUri": "file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider_macos-0.0.4+3",
    [        ]     |       "packageUri": "lib/",
    [   +6 ms]     |       "languageVersion": "2.1"
    [   +1 ms]     |     },
    [   +1 ms]     |     {
    [        ]     |       "name": "path_provider_platform_interface",
    [        ]     |       "rootUri": "file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider_platform_interface-1.0.2",
    [        ]     |       "packageUri": "lib/",
    [        ]     |       "languageVersion": "2.1"
    [        ]     |     },
    [        ]     |     {
    [        ]     |       "name": "pedantic",
    [        ]     |       "rootUri": "file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/pedantic-1.9.0",
    [        ]     |       "packageUri": "lib/",
    [        ]     |       "languageVersion": "2.1"
    [   +3 ms]     |     },
    [   +1 ms]     |     {
    [        ]     |       "name": "petitparser",
    [   +1 ms]     |       "rootUri": "file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/petitparser-3.0.4",
    [        ]     |       "packageUri": "lib/",
    [        ]     |       "languageVersion": "2.7"
    [        ]     |     },
    [        ]     |     {
    [        ]     |       "name": "platform",
    [        ]     |       "rootUri": "file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/platform-2.2.1",
    [        ]     |       "packageUri": "lib/",
    [        ]     |       "languageVersion": "1.24"
    [        ]     |     },
    [        ]     |     {
    [        ]     |       "name": "plugin_platform_interface",
    [        ]     |       "rootUri": "file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/plugin_platform_interface-1.0.2",
    [   +2 ms]     |       "packageUri": "lib/",
    [   +4 ms]     |       "languageVersion": "2.1"
    [        ]     |     },
    [        ]     |     {
    [   +1 ms]     |       "name": "process",
    [  +12 ms]     |       "rootUri": "file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/process-3.0.13",
    [        ]     |       "packageUri": "lib/",
    [   +1 ms]     |       "languageVersion": "2.0"
    [        ]     |     },
    [        ]     |     {
    [        ]     |       "name": "provider",
    [   +7 ms]     |       "rootUri": "file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/provider-4.3.1",
    [   +1 ms]     |       "packageUri": "lib/",
    [        ]     |       "languageVersion": "2.7"
    [        ]     |     },
    [        ]     |     {
    [        ]     |       "name": "rxdart",
    [        ]     |       "rootUri": "file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/rxdart-0.24.1",
    [        ]     |       "packageUri": "lib/",
    [        ]     |       "languageVersion": "2.6"
    [        ]     |     },
    [        ]     |     {
    [        ]     |       "name": "sky_engine",
    [        ]     |       "rootUri": "file:///D:/DK_Projects/flutter/bin/cache/pkg/sky_engine",
    [        ]     |       "packageUri": "lib/",
    [   +2 ms]     |       "languageVersion": "1.11"
    [        ]     |     },
    [   +3 ms]     |     {
    [        ]     |       "name": "source_span",
    [        ]     |       "rootUri": "file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/source_span-1.7.0",
    [        ]     |       "packageUri": "lib/",
    [        ]     |       "languageVersion": "2.6"
    [        ]     |     },
    [        ]     |     {
    [        ]     |       "name": "sqflite",
    [        ]     |       "rootUri": "file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/sqflite-1.3.1",
    [        ]     |       "packageUri": "lib/",
    [        ]     |       "languageVersion": "2.7"
    [        ]     |     },
    [        ]     |     {
    [        ]     |       "name": "sqflite_common",
    [        ]     |       "rootUri": "file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/sqflite_common-1.0.2+1",
    [   +3 ms]     |       "packageUri": "lib/",
    [   +5 ms]     |       "languageVersion": "2.7"
    [        ]     |     },
    [        ]     |     {
    [   +1 ms]     |       "name": "stack_trace",
    [        ]     |       "rootUri": "file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/stack_trace-1.9.5",
    [        ]     |       "packageUri": "lib/",
    [        ]     |       "languageVersion": "2.0"
    [   +4 ms]     |     },
    [        ]     |     {
    [        ]     |       "name": "stream_channel",
    [   +1 ms]     |       "rootUri": "file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/stream_channel-2.0.0",
    [   +1 ms]     |       "packageUri": "lib/",
    [        ]     |       "languageVersion": "2.0"
    [        ]     |     },
    [        ]     |     {
    [        ]     |       "name": "string_scanner",
    [        ]     |       "rootUri": "file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/string_scanner-1.0.5",
    [        ]     |       "packageUri": "lib/",
    [        ]     |       "languageVersion": "2.0"
    [        ]     |     },
    [        ]     |     {
    [        ]     |       "name": "styled_text",
    [        ]     |       "rootUri": "file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/styled_text-1.0.1+1",
    [        ]     |       "packageUri": "lib/",
    [   +2 ms]     |       "languageVersion": "2.1"
    [   +1 ms]     |     },
    [   +6 ms]     |     {
    [  +11 ms]     |       "name": "synchronized",
    [        ]     |       "rootUri": "file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/synchronized-2.2.0+2",
    [   +6 ms]     |       "packageUri": "lib/",
    [        ]     |       "languageVersion": "2.8"
    [        ]     |     },
    [   +5 ms]     |     {
    [   +2 ms]     |       "name": "term_glyph",
    [        ]     |       "rootUri": "file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/term_glyph-1.1.0",
    [        ]     |       "packageUri": "lib/",
    [   +1 ms]     |       "languageVersion": "1.8"
    [        ]     |     },
    [        ]     |     {
    [        ]     |       "name": "test_api",
    [        ]     |       "rootUri": "file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/test_api-0.2.17",
    [        ]     |       "packageUri": "lib/",
    [        ]     |       "languageVersion": "2.7"
    [        ]     |     },
    [   +2 ms]     |     {
    [        ]     |       "name": "typed_data",
    [        ]     |       "rootUri": "file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/typed_data-1.2.0",
    [        ]     |       "packageUri": "lib/",
    [   +1 ms]     |       "languageVersion": "2.4"
    [        ]     |     },
    [        ]     |     {
    [        ]     |       "name": "uuid",
    [        ]     |       "rootUri": "file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/uuid-2.2.0",
    [        ]     |       "packageUri": "lib/",
    [        ]     |       "languageVersion": "2.0"
    [   +1 ms]     |     },
    [        ]     |     {
    [        ]     |       "name": "vector_math",
    [        ]     |       "rootUri": "file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/vector_math-2.0.8",
    [        ]     |       "packageUri": "lib/",
    [        ]     |       "languageVersion": "2.0"
    [        ]     |     },
    [        ]     |     {
    [        ]     |       "name": "xdg_directories",
    [        ]     |       "rootUri": "file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/xdg_directories-0.1.0",
    [   +3 ms]     |       "packageUri": "lib/",
    [   +2 ms]     |       "languageVersion": "2.3"
    [        ]     |     },
    [        ]     |     {
    [        ]     |       "name": "xml",
    [        ]     |       "rootUri": "file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/xml-4.2.0",
    [        ]     |       "packageUri": "lib/",
    [        ]     |       "languageVersion": "2.7"
    [        ]     |     },
    [        ]     |     {
    [        ]     |       "name": "xmlstream",
    [        ]     |       "rootUri": "file:///D:/DK_Projects/flutter/.pub-cache/hosted/pub.dartlang.org/xmlstream-0.11.1",
    [        ]     |       "packageUri": "lib/",
    [        ]     |       "languageVersion": "1.9"
    [   +2 ms]     |     },
    [        ]     |     {
    [        ]     |       "name": "lomaysowda",
    [        ]     |       "rootUri": "../",
    [        ]     |       "packageUri": "lib/",
    [        ]     |       "languageVersion": "2.1"
    [        ]     |     }
    [        ]     |   ],
    [        ]     |   "generated": "2020-08-13T17:17:07.851860Z",
    [        ]     |   "generator": "pub",
    [        ]     |   "generatorVersion": "2.9.0"
    [        ]     | }
    [  +40 ms] Running "flutter pub get" in lomay_sowda... (completed in 1,8s)
    [  +87 ms] Found plugin device_info at D:\DK_Projects\flutter\.pub-cache\hosted\pub.dartlang.org\device_info-0.4.2+4\
    [  +51 ms] Found plugin path_provider at D:\DK_Projects\flutter\.pub-cache\hosted\pub.dartlang.org\path_provider-1.6.11\
    [   +4 ms] Found plugin path_provider_linux at D:\DK_Projects\flutter\.pub-cache\hosted\pub.dartlang.org\path_provider_linux-0.0.1+2\
    [   +4 ms] Found plugin path_provider_macos at D:\DK_Projects\flutter\.pub-cache\hosted\pub.dartlang.org\path_provider_macos-0.0.4+3\
    [  +18 ms] Found plugin sqflite at D:\DK_Projects\flutter\.pub-cache\hosted\pub.dartlang.org\sqflite-1.3.1\
    [  +86 ms] Found plugin device_info at D:\DK_Projects\flutter\.pub-cache\hosted\pub.dartlang.org\device_info-0.4.2+4\
    [  +17 ms] Found plugin path_provider at D:\DK_Projects\flutter\.pub-cache\hosted\pub.dartlang.org\path_provider-1.6.11\
    [   +1 ms] Found plugin path_provider_linux at D:\DK_Projects\flutter\.pub-cache\hosted\pub.dartlang.org\path_provider_linux-0.0.1+2\
    [   +1 ms] Found plugin path_provider_macos at D:\DK_Projects\flutter\.pub-cache\hosted\pub.dartlang.org\path_provider_macos-0.0.4+3\
    [   +8 ms] Found plugin sqflite at D:\DK_Projects\flutter\.pub-cache\hosted\pub.dartlang.org\sqflite-1.3.1\
    [  +75 ms] Generating D:\DK_Projects\FlutterProjects\Learning\lomay_sowda\android\app\src\main\java\io\flutter\plugins\GeneratedPluginRegistrant.java
    [  +31 ms] ro.hardware = exynos7885
    [        ] ro.build.characteristics = phone
    [  +50 ms] executing: D:\DK_Projects\AndroidSDK\build-tools\30.0.1\aapt dump xmltree D:\DK_Projects\FlutterProjects\Learning\lomay_sowda\build\app\outputs\flutter-apk\app.apk
    AndroidManifest.xml
    [  +13 ms] Exit code 0 from: D:\DK_Projects\AndroidSDK\build-tools\30.0.1\aapt dump xmltree D:\DK_Projects\FlutterProjects\Learning\lomay_sowda\build\app\outputs\flutter-apk\app.apk
    AndroidManifest.xml
    [   +1 ms] N: android=http://schemas.android.com/apk/res/android
                 E: manifest (line=2)
                   A: android:versionCode(0x0101021b)=(type 0x10)0x1
                   A: android:versionName(0x0101021c)="1.0.0" (Raw: "1.0.0")
                   A: android:compileSdkVersion(0x01010572)=(type 0x10)0x1e
                   A: android:compileSdkVersionCodename(0x01010573)="11" (Raw: "11")
                   A: package="com.dowlpack.lomaysowda" (Raw: "com.dowlpack.lomaysowda")
                   A: platformBuildVersionCode=(type 0x10)0x1e
                   A: platformBuildVersionName=(type 0x10)0xb
                   E: uses-sdk (line=7)
                     A: android:minSdkVersion(0x0101020c)=(type 0x10)0x10
                     A: android:targetSdkVersion(0x01010270)=(type 0x10)0x1c
                   E: uses-permission (line=17)
                     A: android:name(0x01010003)="android.permission.INTERNET" (Raw: "android.permission.INTERNET")
                   E: application (line=19)
                     A: android:label(0x01010001)="lomaysowda" (Raw: "lomaysowda")
                     A: android:icon(0x01010002)=@0x7f080000
                     A: android:name(0x01010003)="io.flutter.app.FlutterApplication" (Raw: "io.flutter.app.FlutterApplication")
                     A: android:appComponentFactory(0x0101057a)="androidx.core.app.CoreComponentFactory" (Raw: "androidx.core.app.CoreComponentFactory")
                     E: activity (line=24)
                       A: android:theme(0x01010000)=@0x7f0a0000
                       A: android:name(0x01010003)="com.dowlpack.lomaysowda.MainActivity" (Raw: "com.dowlpack.lomaysowda.MainActivity")
                       A: android:launchMode(0x0101001d)=(type 0x10)0x1
                       A: android:configChanges(0x0101001f)=(type 0x11)0x40003fb4
                       A: android:windowSoftInputMode(0x0101022b)=(type 0x11)0x10
                       A: android:hardwareAccelerated(0x010102d3)=(type 0x12)0xffffffff
                       E: intent-filter (line=31)
                         E: action (line=32)
                           A: android:name(0x01010003)="android.intent.action.MAIN" (Raw: "android.intent.action.MAIN")
                         E: category (line=34)
                           A: android:name(0x01010003)="android.intent.category.LAUNCHER" (Raw: "android.intent.category.LAUNCHER")
                     E: meta-data (line=41)
                       A: android:name(0x01010003)="flutterEmbedding" (Raw: "flutterEmbedding")
                       A: android:value(0x01010024)=(type 0x10)0x2
    [   +5 ms] Launching lib\main.dart on SM A750FN in release mode...
    [   +5 ms] executing: D:\DK_Projects\AndroidSDK\platform-tools\adb.exe -s 320001fc5b42b513 shell -x logcat -v time -t 1
    [ +120 ms] Exit code 0 from: D:\DK_Projects\AndroidSDK\platform-tools\adb.exe -s 320001fc5b42b513 shell -x logcat -v time -t 1
    [   +1 ms] --------- beginning of main
               08-13 22:17:09.213 D/MTPRx   ( 1762): inside isSyncFinished posting message with delay of 4sec
    [   +2 ms] executing: D:\DK_Projects\AndroidSDK\platform-tools\adb.exe -s 320001fc5b42b513 shell -x logcat -v time -t 1
    [ +116 ms] Exit code 0 from: D:\DK_Projects\AndroidSDK\platform-tools\adb.exe -s 320001fc5b42b513 shell -x logcat -v time -t 1
    [   +1 ms] --------- beginning of main
               08-13 22:17:09.335 W/MTPRx   ( 1762): notification from stack 10
    [  +18 ms] executing: D:\DK_Projects\AndroidSDK\platform-tools\adb.exe version
    [  +21 ms] Android Debug Bridge version 1.0.41
               Version 30.0.4-6686687
               Installed as D:\DK_Projects\AndroidSDK\platform-tools\adb.exe
    [   +4 ms] executing: D:\DK_Projects\AndroidSDK\platform-tools\adb.exe start-server
    [  +27 ms] Building APK
    [  +27 ms] Running Gradle task 'assembleRelease'...
    [   +2 ms] gradle.properties already sets `android.enableR8`
    [   +6 ms] Using gradle from D:\DK_Projects\FlutterProjects\Learning\lomay_sowda\android\gradlew.bat.
    [   +1 ms] D:\DK_Projects\FlutterProjects\Learning\lomay_sowda\android\gradlew.bat mode: 33279 rwxrwxrwx.
    [  +13 ms] executing: C:\Program Files\Android\Android Studio\jre\bin\java -version
    [ +111 ms] Exit code 0 from: C:\Program Files\Android\Android Studio\jre\bin\java -version
    [   +1 ms] openjdk version "1.8.0_242-release"
               OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b01)
               OpenJDK 64-Bit Server VM (build 25.242-b01, mixed mode)
    [   +2 ms] executing: [D:\DK_Projects\FlutterProjects\Learning\lomay_sowda\android/] D:\DK_Projects\FlutterProjects\Learning\lomay_sowda\android\gradlew.bat -Pverbose=true
    -Ptarget-platform=android-arm64 -Ptarget=D:\DK_Projects\FlutterProjects\Learning\lomay_sowda\lib\main.dart -Ptrack-widget-creation=true -Pfilesystem-scheme=org-dartlang-root
    assembleRelease
    [+4347 ms] > Task :app:compileFlutterBuildRelease
    [   +1 ms] [ +158 ms] executing: [D:\DK_Projects\flutter/] git -c log.showSignature=false log -n 1 --pretty=format:%H
    [   +1 ms] [  +72 ms] Exit code 0 from: git -c log.showSignature=false log -n 1 --pretty=format:%H
    [        ] [        ] 2ae34518b87dd891355ed6c6ea8cb68c4d52bb9d
    [   +1 ms] [        ] executing: [D:\DK_Projects\flutter/] git tag --contains HEAD
    [   +1 ms] [ +263 ms] Exit code 0 from: git tag --contains HEAD
    [        ] [        ] 1.20.1
    [        ] [  +10 ms] executing: [D:\DK_Projects\flutter/] git rev-parse --abbrev-ref --symbolic @{u}
    [   +1 ms] [  +33 ms] Exit code 0 from: git rev-parse --abbrev-ref --symbolic @{u}
    [   +1 ms] [        ] origin/stable
    [   +1 ms] [        ] executing: [D:\DK_Projects\flutter/] git ls-remote --get-url origin
    [        ] [  +36 ms] Exit code 0 from: git ls-remote --get-url origin
    [        ] [        ] https://github.com/flutter/flutter.git
    [        ] [  +85 ms] executing: [D:\DK_Projects\flutter/] git rev-parse --abbrev-ref HEAD
    [        ] [  +37 ms] Exit code 0 from: git rev-parse --abbrev-ref HEAD
    [   +2 ms] [        ] stable
    [   +1 ms] [  +49 ms] Artifact Instance of 'AndroidMavenArtifacts' is not required, skipping update.
    [   +1 ms] [        ] Artifact Instance of 'AndroidGenSnapshotArtifacts' is not required, skipping update.
    [        ] [        ] Artifact Instance of 'AndroidInternalBuildArtifacts' is not required, skipping update.
    [   +2 ms] [        ] Artifact Instance of 'IOSEngineArtifacts' is not required, skipping update.
    [   +1 ms] [        ] Artifact Instance of 'FlutterWebSdk' is not required, skipping update.
    [   +3 ms] [   +4 ms] Artifact Instance of 'WindowsEngineArtifacts' is not required, skipping update.
    [   +1 ms] [        ] Artifact Instance of 'MacOSEngineArtifacts' is not required, skipping update.
    [        ] [        ] Artifact Instance of 'LinuxEngineArtifacts' is not required, skipping update.
    [   +3 ms] [        ] Artifact Instance of 'LinuxFuchsiaSDKArtifacts' is not required, skipping update.
    [   +1 ms] [        ] Artifact Instance of 'MacOSFuchsiaSDKArtifacts' is not required, skipping update.
    [   +1 ms] [        ] Artifact Instance of 'FlutterRunnerSDKArtifacts' is not required, skipping update.
    [   +1 ms] [        ] Artifact Instance of 'FlutterRunnerDebugSymbols' is not required, skipping update.
    [        ] [  +13 ms] Artifact Instance of 'MaterialFonts' is not required, skipping update.
    [   +2 ms] [        ] Artifact Instance of 'GradleWrapper' is not required, skipping update.
    [   +1 ms] [        ] Artifact Instance of 'AndroidMavenArtifacts' is not required, skipping update.
    [   +1 ms] [        ] Artifact Instance of 'AndroidGenSnapshotArtifacts' is not required, skipping update.
    [   +1 ms] [        ] Artifact Instance of 'AndroidInternalBuildArtifacts' is not required, skipping update.
    [   +1 ms] [        ] Artifact Instance of 'IOSEngineArtifacts' is not required, skipping update.
    [   +1 ms] [        ] Artifact Instance of 'FlutterWebSdk' is not required, skipping update.
    [   +9 ms] [        ] Artifact Instance of 'FlutterSdk' is not required, skipping update.
    [   +1 ms] [        ] Artifact Instance of 'WindowsEngineArtifacts' is not required, skipping update.
    [   +1 ms] [        ] Artifact Instance of 'MacOSEngineArtifacts' is not required, skipping update.
    [   +1 ms] [        ] Artifact Instance of 'LinuxEngineArtifacts' is not required, skipping update.
    [   +1 ms] [        ] Artifact Instance of 'LinuxFuchsiaSDKArtifacts' is not required, skipping update.
    [   +1 ms] [        ] Artifact Instance of 'MacOSFuchsiaSDKArtifacts' is not required, skipping update.
    [   +2 ms] [        ] Artifact Instance of 'FlutterRunnerSDKArtifacts' is not required, skipping update.
    [   +4 ms] [        ] Artifact Instance of 'FlutterRunnerDebugSymbols' is not required, skipping update.
    [   +1 ms] [        ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update.
    [   +1 ms] [        ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update.
    [   +1 ms] [        ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update.
    [   +4 ms] [        ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update.
    [  +10 ms] [        ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update.
    [   +7 ms] [        ] Artifact Instance of 'FontSubsetArtifacts' is not required, skipping update.
    [        ] [ +114 ms] Initializing file store
    [        ] [  +30 ms] Done initializing file store
    [        ] [  +93 ms] Skipping target: gen_localizations
    [ +980 ms] [+1148 ms] kernel_snapshot: Starting due to {InvalidatedReason.inputChanged}
    [   +2 ms] [  +47 ms] D:\DK_Projects\flutter\bin\cache\dart-sdk\bin\dart.exe --disable-dart-dev
    D:\DK_Projects\flutter\bin\cache\artifacts\engine\windows-x64\frontend_server.dart.snapshot --sdk-root
    D:\DK_Projects\flutter\bin\cache\artifacts\engine\common\flutter_patched_sdk_product/ --target=flutter -Ddart.developer.causal_async_stacks=false -Ddart.vm.profile=false
    -Ddart.vm.product=true --bytecode-options=source-positions --aot --tfa --packages D:\DK_Projects\FlutterProjects\Learning\lomay_sowda\.packages --output-dill
    D:\DK_Projects\FlutterProjects\Learning\lomay_sowda\.dart_tool\flutter_build\f490f9b54347163ba1d29cfc509e7ac2\app.dill --depfile
    D:\DK_Projects\FlutterProjects\Learning\lomay_sowda\.dart_tool\flutter_build\f490f9b54347163ba1d29cfc509e7ac2\kernel_snapshot.d package:lomaysowda/main.dart
    [+34901 ms] [+34907 ms] kernel_snapshot: Complete
    [ +390 ms] [ +401 ms] invalidated build due to missing files: D:\DK_Projects\FlutterProjects\Learning\lomay_sowda\DOES_NOT_EXIST_RERUN_FOR_WILDCARD973434497
    [ +203 ms] [ +187 ms] aot_android_asset_bundle: Starting due to {InvalidatedReason.inputMissing}
    [ +297 ms] [ +302 ms] Manifest contained wildcard assets. Inserting missing file into build graph to force rerun. for more information see #56466.
    [   +2 ms] [  +36 ms] aot_android_asset_bundle: Complete
    [ +201 ms] [ +154 ms] android_aot_release_android-arm64: Starting due to {InvalidatedReason.inputChanged}
    [   +1 ms] [   +8 ms] executing: D:\DK_Projects\flutter\bin\cache\artifacts\engine\android-arm64-release\windows-x64\gen_snapshot --deterministic --snapshot_kind=app-aot-elf
    --elf=D:\DK_Projects\FlutterProjects\Learning\lomay_sowda\.dart_tool\flutter_build\f490f9b54347163ba1d29cfc509e7ac2\arm64-v8a\app.so --strip --no-causal-async-stacks --lazy-async-stacks
    D:\DK_Projects\FlutterProjects\Learning\lomay_sowda\.dart_tool\flutter_build\f490f9b54347163ba1d29cfc509e7ac2\app.dill
    [+17496 ms] [+17476 ms] android_aot_release_android-arm64: Complete
    [ +204 ms] [ +193 ms] Skipping target: android_aot_bundle_release_android-arm64
    [   +2 ms] [        ] Persisting file store
    [   +1 ms] [  +21 ms] Done persisting file store
    [        ] [  +12 ms] build succeeded.
    [   +1 ms] [  +19 ms] "flutter assemble" took 55 183ms.
    [        ] [   +5 ms] ensureAnalyticsSent: 0ms
    [        ] [   +1 ms] Running shutdown hooks
    [        ] [        ] Shutdown hooks complete
    [        ] [        ] exiting with code 0
    [ +123 ms] > Task :app:packLibsflutterBuildRelease UP-TO-DATE
    [   +1 ms] > Task :app:preBuild UP-TO-DATE
    [        ] > Task :app:preReleaseBuild UP-TO-DATE
    [        ] > Task :device_info:preBuild UP-TO-DATE
    [        ] > Task :device_info:preReleaseBuild UP-TO-DATE
    [        ] > Task :device_info:compileReleaseAidl NO-SOURCE
    [        ] > Task :path_provider:preBuild UP-TO-DATE
    [        ] > Task :path_provider:preReleaseBuild UP-TO-DATE
    [        ] > Task :sqflite:preBuild UP-TO-DATE
    [        ] > Task :sqflite:preReleaseBuild UP-TO-DATE
    [        ] > Task :sqflite:compileReleaseAidl NO-SOURCE
    [        ] > Task :path_provider:compileReleaseAidl NO-SOURCE
    [        ] > Task :app:compileReleaseAidl NO-SOURCE
    [        ] > Task :device_info:packageReleaseRenderscript NO-SOURCE
    [        ] > Task :path_provider:packageReleaseRenderscript NO-SOURCE
    [        ] > Task :sqflite:packageReleaseRenderscript NO-SOURCE
    [        ] > Task :app:compileReleaseRenderscript NO-SOURCE
    [        ] > Task :app:checkReleaseManifest UP-TO-DATE
    [        ] > Task :app:generateReleaseBuildConfig UP-TO-DATE
    [  +56 ms] > Task :app:cleanMergeReleaseAssets
    [   +1 ms] > Task :app:mergeReleaseShaders UP-TO-DATE
    [   +1 ms] > Task :app:compileReleaseShaders UP-TO-DATE
    [   +1 ms] > Task :app:generateReleaseAssets UP-TO-DATE
    [        ] > Task :device_info:mergeReleaseShaders UP-TO-DATE
    [   +1 ms] > Task :device_info:compileReleaseShaders UP-TO-DATE
    [   +1 ms] > Task :device_info:generateReleaseAssets UP-TO-DATE
    [        ] > Task :device_info:packageReleaseAssets UP-TO-DATE
    [   +1 ms] > Task :path_provider:mergeReleaseShaders UP-TO-DATE
    [   +1 ms] > Task :path_provider:compileReleaseShaders UP-TO-DATE
    [        ] > Task :path_provider:generateReleaseAssets UP-TO-DATE
    [        ] > Task :path_provider:packageReleaseAssets UP-TO-DATE
    [   +1 ms] > Task :sqflite:mergeReleaseShaders UP-TO-DATE
    [   +1 ms] > Task :sqflite:compileReleaseShaders UP-TO-DATE
    [   +2 ms] > Task :sqflite:generateReleaseAssets UP-TO-DATE
    [  +74 ms] > Task :sqflite:packageReleaseAssets UP-TO-DATE
    [   +1 ms] > Task :app:mergeReleaseAssets
    [        ] > Task :app:copyFlutterAssetsRelease
    [        ] > Task :app:mainApkListPersistenceRelease UP-TO-DATE
    [        ] > Task :app:generateReleaseResValues UP-TO-DATE
    [        ] > Task :app:generateReleaseResources UP-TO-DATE
    [ +103 ms] > Task :device_info:generateReleaseResValues UP-TO-DATE
    [   +1 ms] > Task :device_info:compileReleaseRenderscript NO-SOURCE
    [   +1 ms] > Task :device_info:generateReleaseResources UP-TO-DATE
    [   +3 ms] > Task :device_info:packageReleaseResources UP-TO-DATE
    [        ] > Task :path_provider:generateReleaseResValues UP-TO-DATE
    [        ] > Task :path_provider:compileReleaseRenderscript NO-SOURCE
    [        ] > Task :path_provider:generateReleaseResources UP-TO-DATE
    [        ] > Task :path_provider:packageReleaseResources UP-TO-DATE
    [        ] > Task :sqflite:generateReleaseResValues UP-TO-DATE
    [        ] > Task :sqflite:compileReleaseRenderscript NO-SOURCE
    [   +2 ms] > Task :sqflite:generateReleaseResources UP-TO-DATE
    [   +1 ms] > Task :sqflite:packageReleaseResources UP-TO-DATE
    [        ] > Task :app:mergeReleaseResources UP-TO-DATE
    [  +27 ms] > Task :app:createReleaseCompatibleScreenManifests UP-TO-DATE
    [   +3 ms] > Task :device_info:checkReleaseManifest UP-TO-DATE
    [   +8 ms] > Task :device_info:processReleaseManifest UP-TO-DATE
    [   +2 ms] > Task :path_provider:checkReleaseManifest UP-TO-DATE
    [   +1 ms] > Task :path_provider:processReleaseManifest UP-TO-DATE
    [   +4 ms] > Task :sqflite:checkReleaseManifest UP-TO-DATE
    [   +8 ms] > Task :sqflite:processReleaseManifest UP-TO-DATE
    [   +6 ms] > Task :app:processReleaseManifest UP-TO-DATE
    [   +8 ms] > Task :device_info:parseReleaseLibraryResources UP-TO-DATE
    [  +13 ms] > Task :device_info:generateReleaseRFile UP-TO-DATE
    [  +51 ms] > Task :path_provider:parseReleaseLibraryResources UP-TO-DATE
    [   +5 ms] > Task :path_provider:generateReleaseRFile UP-TO-DATE
    [  +28 ms] > Task :sqflite:parseReleaseLibraryResources UP-TO-DATE
    [   +1 ms] > Task :sqflite:generateReleaseRFile UP-TO-DATE
    [        ] > Task :app:processReleaseResources UP-TO-DATE
    [   +2 ms] > Task :device_info:generateReleaseBuildConfig UP-TO-DATE
    [        ] > Task :device_info:javaPreCompileRelease UP-TO-DATE
    [        ] > Task :device_info:compileReleaseJavaWithJavac UP-TO-DATE
    [        ] > Task :device_info:bundleLibCompileRelease UP-TO-DATE
    [        ] > Task :path_provider:generateReleaseBuildConfig UP-TO-DATE
    [        ] > Task :path_provider:javaPreCompileRelease UP-TO-DATE
    [        ] > Task :path_provider:compileReleaseJavaWithJavac UP-TO-DATE
    [        ] > Task :path_provider:bundleLibCompileRelease UP-TO-DATE
    [        ] > Task :sqflite:generateReleaseBuildConfig UP-TO-DATE
    [        ] > Task :sqflite:javaPreCompileRelease UP-TO-DATE
    [        ] > Task :sqflite:compileReleaseJavaWithJavac UP-TO-DATE
    [        ] > Task :sqflite:bundleLibCompileRelease UP-TO-DATE
    [        ] > Task :app:compileReleaseKotlin UP-TO-DATE
    [        ] > Task :app:javaPreCompileRelease UP-TO-DATE
    [        ] > Task :app:compileReleaseJavaWithJavac UP-TO-DATE
    [        ] > Task :app:compileReleaseSources UP-TO-DATE
    [        ] > Task :app:prepareLintJar UP-TO-DATE
    [        ] > Task :device_info:prepareLintJarForPublish UP-TO-DATE
    [        ] > Task :path_provider:prepareLintJarForPublish UP-TO-DATE
    [        ] > Task :sqflite:prepareLintJarForPublish UP-TO-DATE
    [+1599 ms] > Task :app:lintVitalRelease
    [   +3 ms] > Task :device_info:processReleaseJavaRes NO-SOURCE
    [   +1 ms] > Task :device_info:bundleLibResRelease UP-TO-DATE
    [   +1 ms] > Task :device_info:bundleLibRuntimeRelease UP-TO-DATE
    [        ] > Task :device_info:createFullJarRelease UP-TO-DATE
    [        ] > Task :path_provider:processReleaseJavaRes NO-SOURCE
    [        ] > Task :path_provider:bundleLibResRelease UP-TO-DATE
    [        ] > Task :path_provider:bundleLibRuntimeRelease UP-TO-DATE
    [        ] > Task :path_provider:createFullJarRelease UP-TO-DATE
    [        ] > Task :sqflite:processReleaseJavaRes NO-SOURCE
    [        ] > Task :sqflite:bundleLibResRelease UP-TO-DATE
    [        ] > Task :sqflite:bundleLibRuntimeRelease UP-TO-DATE
    [        ] > Task :sqflite:createFullJarRelease UP-TO-DATE
    [        ] > Task :app:checkReleaseDuplicateClasses UP-TO-DATE
    [   +1 ms] > Task :app:desugarReleaseFileDependencies UP-TO-DATE
    [   +3 ms] > Task :app:transformClassesWithDexBuilderForRelease UP-TO-DATE
    [   +1 ms] > Task :app:mergeExtDexRelease UP-TO-DATE
    [   +3 ms] > Task :app:mergeDexRelease UP-TO-DATE
    [   +2 ms] > Task :app:processReleaseJavaRes NO-SOURCE
    [   +1 ms] > Task :app:validateSigningRelease UP-TO-DATE
    [        ] > Task :app:mergeReleaseJavaResource UP-TO-DATE
    [        ] > Task :app:signingConfigWriterRelease UP-TO-DATE
    [   +1 ms] > Task :app:mergeReleaseJniLibFolders UP-TO-DATE
    [   +3 ms] > Task :device_info:mergeReleaseJniLibFolders UP-TO-DATE
    [  +59 ms] > Task :device_info:mergeReleaseNativeLibs UP-TO-DATE
    [  +12 ms] > Task :device_info:stripReleaseDebugSymbols UP-TO-DATE
    [   +1 ms] > Task :device_info:transformNativeLibsWithIntermediateJniLibsForRelease UP-TO-DATE
    [        ] > Task :path_provider:mergeReleaseJniLibFolders UP-TO-DATE
    [   +1 ms] > Task :path_provider:mergeReleaseNativeLibs UP-TO-DATE
    [   +4 ms] > Task :path_provider:stripReleaseDebugSymbols UP-TO-DATE
    [   +1 ms] > Task :path_provider:transformNativeLibsWithIntermediateJniLibsForRelease UP-TO-DATE
    [        ] > Task :sqflite:mergeReleaseJniLibFolders UP-TO-DATE
    [        ] > Task :sqflite:mergeReleaseNativeLibs UP-TO-DATE
    [        ] > Task :sqflite:stripReleaseDebugSymbols UP-TO-DATE
    [        ] > Task :sqflite:transformNativeLibsWithIntermediateJniLibsForRelease UP-TO-DATE
    [   +3 ms] > Task :app:mergeReleaseNativeLibs UP-TO-DATE
    [        ] > Task :app:stripReleaseDebugSymbols UP-TO-DATE
    [   +6 ms] Compatible side by side NDK version was not found.
    [   +4 ms] > Task :app:packageRelease UP-TO-DATE
    [  +56 ms] > Task :app:assembleRelease
    [   +3 ms] > Task :device_info:extractReleaseAnnotations UP-TO-DATE
    [        ] > Task :device_info:mergeReleaseGeneratedProguardFiles UP-TO-DATE
    [        ] > Task :device_info:mergeReleaseConsumerProguardFiles UP-TO-DATE
    [        ] > Task :device_info:mergeReleaseJavaResource UP-TO-DATE
    [        ] > Task :device_info:transformClassesAndResourcesWithSyncLibJarsForRelease UP-TO-DATE
    [        ] > Task :device_info:transformNativeLibsWithSyncJniLibsForRelease UP-TO-DATE
    [        ] > Task :device_info:bundleReleaseAar UP-TO-DATE
    [   +1 ms] > Task :device_info:compileReleaseSources UP-TO-DATE
    [   +1 ms] > Task :path_provider:extractReleaseAnnotations UP-TO-DATE
    [   +2 ms] > Task :device_info:mergeReleaseResources UP-TO-DATE
    [   +1 ms] > Task :device_info:verifyReleaseResources UP-TO-DATE
    [   +3 ms] > Task :device_info:assembleRelease UP-TO-DATE
    [   +2 ms] > Task :path_provider:mergeReleaseGeneratedProguardFiles UP-TO-DATE
    [  +17 ms] > Task :path_provider:mergeReleaseConsumerProguardFiles UP-TO-DATE
    [   +1 ms] > Task :path_provider:mergeReleaseJavaResource UP-TO-DATE
    [        ] > Task :path_provider:transformClassesAndResourcesWithSyncLibJarsForRelease UP-TO-DATE
    [        ] > Task :path_provider:transformNativeLibsWithSyncJniLibsForRelease UP-TO-DATE
    [   +2 ms] > Task :path_provider:bundleReleaseAar UP-TO-DATE
    [   +3 ms] > Task :path_provider:compileReleaseSources UP-TO-DATE
    [        ] > Task :sqflite:extractReleaseAnnotations UP-TO-DATE
    [  +61 ms] > Task :path_provider:mergeReleaseResources UP-TO-DATE
    [   +2 ms] > Task :path_provider:verifyReleaseResources UP-TO-DATE
    [        ] > Task :path_provider:assembleRelease UP-TO-DATE
    [        ] > Task :sqflite:mergeReleaseGeneratedProguardFiles UP-TO-DATE
    [   +1 ms] > Task :sqflite:mergeReleaseConsumerProguardFiles UP-TO-DATE
    [   +1 ms] > Task :sqflite:mergeReleaseJavaResource UP-TO-DATE
    [   +1 ms] > Task :sqflite:transformClassesAndResourcesWithSyncLibJarsForRelease UP-TO-DATE
    [   +1 ms] > Task :sqflite:transformNativeLibsWithSyncJniLibsForRelease UP-TO-DATE
    [        ] > Task :sqflite:bundleReleaseAar UP-TO-DATE
    [        ] > Task :sqflite:compileReleaseSources UP-TO-DATE
    [        ] > Task :sqflite:mergeReleaseResources UP-TO-DATE
    [        ] > Task :sqflite:verifyReleaseResources UP-TO-DATE
    [   +1 ms] > Task :sqflite:assembleRelease UP-TO-DATE
    [   +1 ms] BUILD SUCCESSFUL in 1m 1s
    [   +1 ms] 123 actionable tasks: 6 executed, 117 up-to-date
    [ +534 ms] Running Gradle task 'assembleRelease'... (completed in 62,3s)
    [  +16 ms] calculateSha: LocalDirectory: 'D:\DK_Projects\FlutterProjects\Learning\lomay_sowda\build\app\outputs\flutter-apk'/app.apk
    [  +18 ms] calculateSha: reading file took 17us
    [ +170 ms] calculateSha: computing sha took 169us
    [   +7 ms] ✓ Built build\app\outputs\flutter-apk\app-release.apk (10.7MB).
    [   +6 ms] executing: D:\DK_Projects\AndroidSDK\build-tools\30.0.1\aapt dump xmltree D:\DK_Projects\FlutterProjects\Learning\lomay_sowda\build\app\outputs\flutter-apk\app.apk
    AndroidManifest.xml
    [  +16 ms] Exit code 0 from: D:\DK_Projects\AndroidSDK\build-tools\30.0.1\aapt dump xmltree D:\DK_Projects\FlutterProjects\Learning\lomay_sowda\build\app\outputs\flutter-apk\app.apk
    AndroidManifest.xml
    [   +1 ms] N: android=http://schemas.android.com/apk/res/android
                 E: manifest (line=2)
                   A: android:versionCode(0x0101021b)=(type 0x10)0x1
                   A: android:versionName(0x0101021c)="1.0.0" (Raw: "1.0.0")
                   A: android:compileSdkVersion(0x01010572)=(type 0x10)0x1e
                   A: android:compileSdkVersionCodename(0x01010573)="11" (Raw: "11")
                   A: package="com.dowlpack.lomaysowda" (Raw: "com.dowlpack.lomaysowda")
                   A: platformBuildVersionCode=(type 0x10)0x1e
                   A: platformBuildVersionName=(type 0x10)0xb
                   E: uses-sdk (line=7)
                     A: android:minSdkVersion(0x0101020c)=(type 0x10)0x10
                     A: android:targetSdkVersion(0x01010270)=(type 0x10)0x1c
                   E: uses-permission (line=17)
                     A: android:name(0x01010003)="android.permission.INTERNET" (Raw: "android.permission.INTERNET")
                   E: application (line=19)
                     A: android:label(0x01010001)="lomaysowda" (Raw: "lomaysowda")
                     A: android:icon(0x01010002)=@0x7f080000
                     A: android:name(0x01010003)="io.flutter.app.FlutterApplication" (Raw: "io.flutter.app.FlutterApplication")
                     A: android:appComponentFactory(0x0101057a)="androidx.core.app.CoreComponentFactory" (Raw: "androidx.core.app.CoreComponentFactory")
                     E: activity (line=24)
                       A: android:theme(0x01010000)=@0x7f0a0000
                       A: android:name(0x01010003)="com.dowlpack.lomaysowda.MainActivity" (Raw: "com.dowlpack.lomaysowda.MainActivity")
                       A: android:launchMode(0x0101001d)=(type 0x10)0x1
                       A: android:configChanges(0x0101001f)=(type 0x11)0x40003fb4
                       A: android:windowSoftInputMode(0x0101022b)=(type 0x11)0x10
                       A: android:hardwareAccelerated(0x010102d3)=(type 0x12)0xffffffff
                       E: intent-filter (line=31)
                         E: action (line=32)
                           A: android:name(0x01010003)="android.intent.action.MAIN" (Raw: "android.intent.action.MAIN")
                         E: category (line=34)
                           A: android:name(0x01010003)="android.intent.category.LAUNCHER" (Raw: "android.intent.category.LAUNCHER")
                     E: meta-data (line=41)
                       A: android:name(0x01010003)="flutterEmbedding" (Raw: "flutterEmbedding")
                       A: android:value(0x01010024)=(type 0x10)0x2
    [   +2 ms] Stopping app 'app.apk' on SM A750FN.
    [   +2 ms] executing: D:\DK_Projects\AndroidSDK\platform-tools\adb.exe -s 320001fc5b42b513 shell am force-stop com.dowlpack.lomaysowda
    [ +100 ms] executing: D:\DK_Projects\AndroidSDK\platform-tools\adb.exe -s 320001fc5b42b513 shell pm list packages com.dowlpack.lomaysowda
    [ +112 ms] package:com.dowlpack.lomaysowda
    [  +11 ms] executing: D:\DK_Projects\AndroidSDK\platform-tools\adb.exe -s 320001fc5b42b513 shell cat /data/local/tmp/sky.com.dowlpack.lomaysowda.sha1
    [  +98 ms] fadca670485debaeee247f1c39008762b47fa06d
    [   +1 ms] Latest build already installed.
    [        ] SM A750FN startApp
    [   +1 ms] executing: D:\DK_Projects\AndroidSDK\platform-tools\adb.exe -s 320001fc5b42b513 shell am start -a android.intent.action.RUN -f 0x20000000 --ez enable-background-compilation
    true --ez enable-dart-profiling true com.dowlpack.lomaysowda/com.dowlpack.lomaysowda.MainActivity
    [ +123 ms] Starting: Intent { act=android.intent.action.RUN flg=0x20000000 cmp=com.dowlpack.lomaysowda/.MainActivity (has extras) }
    [   +3 ms] Application running.
    [   +1 ms] Flutter run key commands.
    [   +1 ms] h Repeat this help message.
    [        ] c Clear the screen
    [        ] q Quit (terminate the application on the device).
    [ +426 ms] I/flutter ( 4013): DkPrint Path is:/data/user/0/com.dowlpack.lomaysowda/app_flutter/dbSapSargytMarket.db
    [  +57 ms] I/flutter ( 4013): DkPrint OnStartup
    [   +3 ms] I/flutter ( 4013): DkPrint OnStartup Auth isnt success
    [   +1 ms] I/flutter ( 4013): DkPrint PushNotifyListeners _cartItems changed
    [  +24 ms] I/flutter ( 4013): DkPrint userCount=1
    [   +2 ms] I/flutter ( 4013): DkPrint try to read rpAcc from db
    [   +7 ms] I/flutter ( 4013): Transition { currentState: CartItemIsntSelected state, event: LoadCartItemsFromDb event, nextState: CartItemLoadedFromDb state }
    [   +5 ms] I/flutter ( 4013): DkPrint rpAcc read from db. Try to login
    [   +2 ms] I/flutter ( 4013): DkPrint LoggedIn
    [   +2 ms] I/flutter ( 4013): Transition { currentState: AuthInitial, event: LoginBtnPressedEvent, nextState: AuthInProgress }
    [   +2 ms] I/flutter ( 4013): Basic dXNlcjoxMjM0NTY=
    [   +2 ms] I/flutter ( 4013): DkPrint Count of cart items loaded from db = 3
    [   +5 ms] I/flutter ( 4013): DkPrint PushNotifyListeners _cartItems changed
    [   +5 ms] I/flutter ( 4013): DkPrint Count of cart items loaded from db = 3
    [   +2 ms] I/flutter ( 4013): DkPrint PushNotifyListeners _cartItems changed
    [ +189 ms] I/flutter ( 4013): DkPrint token is 
    [   +2 ms] I/flutter ( 4013): Transition { currentState: AuthInProgress, event: LoginBtnPressedEvent, nextState: AuthFailureState { errorStatus: Status code = 401 } }
    

    flutter analyze

    info - Avoid using braces in interpolation when not needed - lib\Bloc\ResourcesBloc.dart:23:69 - unnecessary_brace_in_string_interps
       info - Avoid using braces in interpolation when not needed - lib\Helpers\dbHelper.dart:105:108 - unnecessary_brace_in_string_interps
       info - This class (or a class that this class inherits from) is marked as '@immutable', but one or more of its instance fields aren't final: ErrorCartItem._resource,
              ErrorCartItem.errorMessage - lib\Pages\CartPage.dart:558:7 - must_be_immutable
        info - Close instances of `dart.core.Sink` - lib\Pages\CategoriesPage.dart:45:11 - close_sinks
       info - This class (or a class that this class inherits from) is marked as '@immutable', but one or more of its instance fields aren't final: ResourceDetailPage._orderCount,
              ResourceDetailPage._height3 - lib\Pages\ResourceDetailPage.dart:19:7 - must_be_immutable
       info - Close instances of `dart.core.Sink` - lib\Pages\ResourcesPage.dart:36:11 - close_sinks
    

    flutter doctor -v

    [√] Flutter (Channel stable, 1.20.1, on Microsoft Windows [Version 10.0.18363.815], locale ru-RU)
        • Flutter version 1.20.1 at D:\DK_Projects\flutter
        • Framework revision 2ae34518b8 (8 days ago), 2020-08-05 19:53:19 -0700
        • Engine revision c8e3b94853
        • Dart version 2.9.0
    
    [!] Android toolchain - develop for Android devices (Android SDK version 30.0.1)
        • Android SDK at D:\DK_Projects\AndroidSDK\
        • Platform android-30, build-tools 30.0.1
        • ANDROID_SDK_ROOT = D:\DK_Projects\AndroidSDK
        • Java binary at: C:\Program Files\Android\Android Studio\jre\bin\java
        • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b01)
        X Android license status unknown.
          Try re-installing or updating your Android SDK Manager.
          See https://developer.android.com/studio/#downloads or visit https://flutter.dev/docs/get-started/install/windows#android-setup for detailed instructions.
    
    [√] Android Studio (version 4.0)
        • Android Studio at C:\Program Files\Android\Android Studio
        • Flutter plugin version 48.0.2
        • Dart plugin version 193.7361
        • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b01)
    
    [√] VS Code (version 1.47.3)
        • VS Code at C:\Users\Администратор\AppData\Local\Programs\Microsoft VS Code
        • Flutter extension version 3.13.2
    
    [√] Connected device (1 available)
        • SM A750FN (mobile) • 320001fc5b42b513 • android-arm64 • Android 10 (API 29)
    
    ! Doctor found issues in 1 category.
    
    pubspec.yaml file
    name: lomaysowda
    description: Lomay Sowda elektron sowda komekcisi
    version: 1.0.0+1
    
    environment:
      sdk: ">=2.1.0 <3.0.0"
    
    dependencies:
      flutter:
        sdk: flutter
      cupertino_icons: ^0.1.2
      http: ^0.12.1
      carousel_pro: ^1.0.0
      clip_shadow: any
      flutter_icons: ^1.1.0
      flutter_bloc: ^4.0.1
      bloc: ^4.0.0
      equatable: ^1.2.0
      badges: ^1.1.1
      styled_text: ^1.0.1+1
      flutter_svg: ^0.18.0
      sqflite: ^1.3.1
      device_info: ^0.4.2+4
      path_provider: ^1.6.11
      provider: ^4.3.1
      cached_network_image: ^2.2.0+1
    
    dev_dependencies:
      flutter_test:
        sdk: flutter
    
    
    flutter:
    
      uses-material-design: true
    
      assets:
        - images/
    
    main.dart with provider
    void main() async {
      WidgetsFlutterBinding.ensureInitialized();
      await DbHelper.init();
      runApp(MyApp());
    }
    
    class MyApp extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return ChangeNotifierProvider<ProviderModel>(
          create: (context) => ProviderModel(Services()),
          child: ...
    }
    
    providerModel.dart
    class ProviderModel with ChangeNotifier{
    
      List<CartItem> _cartItems;
      String _apiAddress;
    
      List<CartItem> get  GetCartItems=>_cartItems;
    
      void set SetCartItems(List<CartItem> cartItems){
        _cartItems=cartItems;
        print("DkPrint PushNotifyListeners _cartItems changed");
        notifyListeners();
      }
    }
    
    stateless widget that uses
    class ResourceItem extends StatelessWidget {
    
    ...
    
      @override
      Widget build(BuildContext context) {
        final providerModel = Provider.of<ProviderModel>(context);
        int _orderCount = providerModel.GetCartItems.firstWhere(
                (element) => element.ResId == _resource.ResId,
                orElse: () => CartItem()).ItemCount ??
            0;
        return ...
    ...
     Column(children: <Widget>[
    (_orderCount > 0)
                  ? CounterWidgets(_orderCount, _resource)
                  : Container(
                      width: 0,
                    ),
    ...
    ])
    
    

    I have internet permission on AndroidMainfest.xml

    My Full project

    bug invalid question 
    opened by Dowlpack 33
  • [RFC] Renaming the parameter 'builder' of providers

    [RFC] Renaming the parameter 'builder' of providers

    Hello!

    TD;DR: This proposal is for a breaking change: renaming builder of Provider/ChangeNotifierProvider/..., to either initialValue or initialValueBuilder.

    Which means before:

    Provider<int>(
      builder: (context) => 42,
    );
    

    after:

    Provider<int>(
      initialValue: (context) => 42,
    );
    

    or initialValue -> initialValueBuilder.

    Feel free to suggest other names or express any point of view on the topic.

    Motivation

    Currently, the default constructor of providers all has a named required parameter builder, that builds a value once.

    But this name causes a few issues.

    • it's misleading. In the context of Flutter, a parameter named builder is usually a function that returns a widget, not a model. Such as:

      StreamBuilder(
        builder: ...
      )
      

      Renaming it to will remove the confusion. And a name such as initialValue also makes it more apparent that builder will not be called again.

    • it prevents fusing *Provider and *ProxyProvider. These two widgets are very similar. Usually, *Provider is just syntax sugar for *ProxyProvider with only an initialBuilder like so:

      Provider(
        builder: (_) => 42,
      );
      

      is equivalent to:

      ProxyProvider<*, int>(
        initialBuilder: (_) => 42,
        builder: (_, __, value) => value,
      );
      

      But it is currently impossible to merge both these widgets because they have both a parameter named builder but with a different prototype.

      By renaming builder to something more expressive, it is possible to host both *Provider and *Proxy under the same class.

      We could have:

      ChangeNotifierProvider(
        initialValue: (_) => MyNotifier(),
      );
      

      Then we'd remove ProxyProvider. And add an extra value or valueBuilder parameter on Provider:

      ChangeNotifierProvider(
        initialValue: (_) => MyNotifier(),
        value: (context, notifier) {
          // Works like *ProxyProvider.builder
          // we can safely call `Provider.of` here
          return notifier
            ..foo = Provider.of<Foo>(context)
        },
      );
      

      Of course, we'd still have numeric syntax sugar like ProxyProvider2/..., but without the Proxy keyword:

      Provider1<Dependency, Result>(
        value: (context, Dependency dep, Result previous) {
          return Result(dep);
        },
      )
      
    • it prevents using builder for an actual "builder" that behaves likes Consumer/StreamBuilder.

      For example, a common use-case is to do:

      Provider<T>(
        builder: (_) => T(),
        child: Consumer<T>(
          builder: (_, value, __)  {
            // TODO: use `value`
          },
        ),
      )
      

      But that's pretty verbose.

      We could simplify it to:

      Provider<T>(
        initialValue: (_) => T(),
        builder: (_, value, __) {
          // TODO: use `value`
        },
      )
      

      Which would be strictly equivalent to the previous code – just smoother to write. But such simplification is not possible because builder is already taken.

    Transition

    This renaming could be done with a smooth transition using @deprecated. In the v3.x, both builder and the new name could be on the widget. builder would then be marked as @deprecated.

    On the other hand, the other listed changes (fusing *Provider & *ProxyProvider or the Consumer shorthand) would not be part of the v3 but instead the v4 – which will also include loading.

    Thoughts?

    Feel free to 👍 or 👎 if you agree/disagree, or comment to make suggestions!

    enhancement help wanted breaking 
    opened by rrousselGit 30
  • [RFC] A way to filter rebuilds at the consumer level

    [RFC] A way to filter rebuilds at the consumer level

    Currently, there's no mechanism to filter updates on the consumer level. There is updateShouldNotify on the provider level, but it's used for a completely different reason.

    It'd be cool to have a way for a widget to explicitly not update when if a field other then the one used changes.


    This cannot be done by Provider.of<T>, but probably doesn't matter. On the other hand, Consumer can.

    There are two main ways to implement such feature:

    • an "updateShouldNotify"-like, that take the previous and new value, and returns a boolean:
      Consumer<Foo>(
        shouldRebuild: (prev, current) => prev.value != current.value,
        builder: (_, Foo foo, __) => Text(foo.value),
      )
      
    • a "selector"/"reducer". It's also a function that takes the current value, and return a new object that contains only the field used. That object is then tasked to override == to not trigger updates when nothing changed.
      Selector<Foo, String>(
        selector: (foo) => foo.value,
        builder: (_, String value, __) => Text(value),
      )
      

    The question is: which method should provider implement?

    "UpdateShouldNotify"-like

    Pros:

    • It's very simple to use
    • It's similar to updateShouldNotify
    • Can be added directly on Consumer without change

    Cons:

    • Hardly even works with mutable data (including most ChangeNotifier implementation). The previous and new value passed to the callback will usually be the same for these objects
    • Unsafe. It's easy to badly implement that shouldRebuild method, by for example forgetting to update the method after editing the content of builder.

    I don't like this approach. But it's simple

    Selector

    The complete opposite of the other solution, which I prefer.

    Pros:

    • Works for ChangeNotifier too
    • Assuming that the == is correctly implemented (it can be generated or made generic), then it is almost guaranteed that it works, even after changing builder.

    Cons:

    • It's harder to work with. We'll typically want to use a code generator (built_value) to generate the == of the "picked values".
    • It doesn't work with Consumer as is because it requires an extra generic type.

    As such, we have two different implementation path:

    Adding a named constructor to Consumer2+

    Since Consumer has variadic variations, we can use variants other than Consumer<Foo>() to implement a selector:

    Consumer2<Consumed, Selected>.selector(
      selector: (Consumed value) => Selected(value.foo),
      builder: (context, Selected selected, child) => Widget,
    )
    

    This works fine. But it's:

    • hard to discover, especially considering Consumer() won't have that constructor
    • confusing because of the name. Consumer2 wouldn't actually consume two objects, but one that is reduced.

    A new "Selector" widget

    We can make a completely new widget, that'd work like Consumer, but with an extra argument:

    Selector<Consumed, Selected>(
      selector: (Consumed value) => Selected(value.foo),
      builder: (context, Selected selected, child) => Widget,
    )
    

    It's easier to discover & less confusing. But we end up having Consumer and Selector fighting against each other.

    opened by rrousselGit 28
  • Cannot provide bloc from inside of other widgets ?

    Cannot provide bloc from inside of other widgets ?

    As I was thinking of using Provider + BLoC. Usually with Inherited widget what is possible is to provide a bloc specific to the route / sub child widgets.

    When I tried the same with Provider it fails to recognize the Bloc?

    But same works in case If I initiate bloc from outside of MaterialApp.

    
    void main() {
      runApp(
        Provider<DevicesBloc>(
          builder: (ctx) => DevicesBloc(),
          child: MaterialApp(
              title: 'WaterLeveller',
              home: DevicesListScreen(),
            ),
          ),    
      );
    }
    
    class DevicesListScreen extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          appBar: AppBar(
            backgroundColor: Color(0xFF448C33),
            title: const Text("Water Leveler"),
            actions: <Widget>[
              IconButton(
                icon: Icon(Icons.add),
                onPressed: () {
                  Navigator.push(context,
                      MaterialPageRoute(builder: (context) => AddDeviceScreen()));
                },
              )
            ],
          ),
          body: Container(
              child: ListView(
                children: <Widget>[
                  GestureDetector(              
                    child: Padding(
                      padding: EdgeInsets.all(30),
                      child: Text("List 1"),
                    ),
                  )
                ],
              ),
            ),    
        );
      }
    }
    

    Those are the parent widgets, and the below one is child widget, In which I have a button "Add" on press, I would like to call a function inside the DevicesBloc, which works in this case.

    class AddDeviceScreen extends StatelessWidget{
      @override
      Widget build(BuildContext context) {    
        return Scaffold(
          appBar: AppBar(
            title: Text("Add Device"),
          ),
          body: Container(
            margin: EdgeInsets.all(20.0),
            child: Column(
              children: <Widget>[
                TextFormField(
                  decoration: InputDecoration(
                    hintText: "Device Name"
                  ),
                  style: TextStyle(
                    
                  ),
                ),
                Padding(
                  padding: const EdgeInsets.fromLTRB(0,14.0,0,0),
                  child: RaisedButton(
                    onPressed: (){
                      Provider.of<DevicesBloc>(context).addDevice();
                    },
                    child: Text("Add"),
                  ),
                )
              ],
            ),
          ),
        );
      }
    }
    

    But same won't work in case I move the bloc provide inside DeviceListScreen like this.

    
    void main() {
      runApp(
       MaterialApp(
              title: 'WaterLeveller',
              home: DevicesListScreen(),
            ),       
      );
    }
    
    
    class DevicesListScreen extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return Provider<DevicesBloc>(
          builder: (ctx) => DevicesBloc(),
          child: Scaffold(
            appBar: AppBar(
              backgroundColor: Color(0xFF448C33),
              title: const Text("Water Leveler"),
              actions: <Widget>[
                IconButton(
                  icon: Icon(Icons.add),
                  onPressed: () {
                    Navigator.push(context,
                        MaterialPageRoute(builder: (context) => AddDeviceScreen()));
                  },
                )
              ],
            ),
            body: Container(
              child: ListView(
                children: <Widget>[
                  GestureDetector(
                    child: Padding(
                      padding: EdgeInsets.all(30),
                      child: Text("List 1"),
                    ),
                  )
                ],
              ),
            ),
          ),
        );
      }
    }
    

    This throws this exception.

    I/flutter (18418): ══╡ EXCEPTION CAUGHT BY GESTURE ╞═══════════════════════════════════════════════════════════════════
    I/flutter (18418): The following ProviderNotFoundError was thrown while handling a gesture:
    I/flutter (18418): Error: Could not find the correct Provider<DevicesBloc> above this AddDeviceScreen Widget
    I/flutter (18418):
    I/flutter (18418): To fix, please:
    I/flutter (18418):
    I/flutter (18418):   * Ensure the Provider<DevicesBloc> is an ancestor to this AddDeviceScreen Widget
    I/flutter (18418):   * Provide types to Provider<DevicesBloc>
    I/flutter (18418):   * Provide types to Consumer<DevicesBloc>
    I/flutter (18418):   * Provide types to Provider.of<DevicesBloc>()
    I/flutter (18418):   * Always use package imports. Ex: `import 'package:my_app/my_code.dart';
    I/flutter (18418):   * Ensure the correct `context` is being used.
    I/flutter (18418):
    I/flutter (18418): If none of these solutions work, please file a bug at:
    I/flutter (18418): https://github.com/rrousselGit/provider/issues
    

    Which in my opinion should be possible ? Or is it something should not be done?

    documentation 
    opened by shashikantx 23
  • context.read crash when call in build function.

    context.read crash when call in build function.

    provider version 4.1.0-dev+2 'package:provider/src/provider.dart': Failed assertion: line 428 pos 7: 'debugIsInInheritedProviderCreate || (!debugDoingBuild && !debugIsInInheritedProviderUpdate)': is not true. my code

    import 'package:flutter/material.dart';
    import 'package:provider/provider.dart';
    
    void main() => runApp(MyApp());
    
    class M with ChangeNotifier {
      int a = 0;
      int b = 0;
    
      void incre() {
        a++;
        notifyListeners();
      }
    }
    
    class MyApp extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          home: Scaffold(
              appBar: AppBar(
                title: Text('hi'),
              ),
              body: MultiProvider(providers: [
                ChangeNotifierProvider(
                  create: (_) => M(),
                )
              ], child: MyCustomForm())),
        );
      }
    }
    
    class MyCustomForm extends StatefulWidget {
      @override
      MyCustomFormState createState() {
        return MyCustomFormState();
      }
    }
    
    class MyCustomFormState extends State<MyCustomForm> {
      @override
      Widget build(BuildContext context) {
        print('rebuild main');
        return Scaffold(
          body: Center(
            child: Column(
              children: <Widget>[
                btn(),
                tx(),
              ],
            ),
          ),
        );
      }
    }
    
    class btn extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        int a = context.read<M>().b;
        print('rebuild btn');
        return RaisedButton(
          onPressed: () {
            context.read<M>().incre();
          },
          child: Text('incre'),
        );
      }
    }
    
    class tx extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        print('rebuild text');
        return Text('hi ${context.watch<M>().a}');
      }
    }
    
    opened by tbm98 20
  • Dynamically creating a MultiProvider

    Dynamically creating a MultiProvider

    I have a use case for dynamically creating a multi provider. To illustrate my problem here is some code that doesn't work:

    List<ChangeNotifierProvider> providers = List<ChangeNotifierProvider>();
    providers.add(new ChangeNotifierProvider<AppProvider>(builder: (context) =>MyFirstProvider()));
    providers.add(new ChangeNotifierProvider<AppProvider>(builder: (context) =>MySecondProvider()));
    
    return MultiProvider(
          providers: providers,
          child: ...
    

    So all my providers extend AppProvider. The problem arises when I try to use a comsumer like this:

    Consumer<MyFirstProvider>(
        builder: (context, provider, _) => ...
    

    This fails because the type MyFirstProvider is not found. Presumably this is because it only finds AppProvider up the hierarchy.

    Is there a way to make this work?

    enhancement 
    opened by gmparker2000 20
  • `ProxyProvider` triggers an assertion failure when depending on a provided value of the same type it is providing

    `ProxyProvider` triggers an assertion failure when depending on a provided value of the same type it is providing

    Hi and thank you for this great package. Please let me know if there's any additional detail I can add to this issue!

    Describe the bug When using ProxyProvider (or ProxyProvider0, ProxyProvider2, etc.) to provide a value of a given type, while also depending an an ancestor value of that same type, a widget rebuild triggers an assertion failure within the Flutter framework:

    The following assertion was thrown building _InheritedProviderScope<AppTheme?>(dirty, dependencies: [_InheritedProviderScope<AppTheme?>], value: Instance of 'PartialAppTheme'):
    'package:flutter/src/widgets/framework.dart': Failed assertion: line 5472 pos 14: '() {
    package:flutter/…/widgets/framework.dart:5472
            // check that it really is our descendant
            Element? ancestor = dependent._parent;
            while (ancestor != this && ancestor != null) {
              ancestor = ancestor._parent;
            }
            return ancestor == this;
          }()': is not true.
    
    
    The relevant error-causing widget was
    ProxyProvider0<AppTheme>
    

    To Reproduce

    A full reproduction is in the collapsed section below, but the PartialAppThemeProvider here is the main part:

    class AppTheme {
      final String property1 = 'AppThemeProperty1';
      final String property2 = 'AppThemeProperty2';
    }
    
    class PartialAppTheme implements AppTheme {
      final AppTheme baseTheme;
    
      @override
      final String property1;
    
      @override
      String get property2 => baseTheme.property2;
    
      PartialAppTheme(this.baseTheme, {required this.property1});
    }
    
    class PartialAppThemeProvider extends SingleChildStatelessWidget {
      const PartialAppThemeProvider({
        super.key,
        super.child,
        required this.property1,
      });
    
      final String property1;
    
      @override
      Widget buildWithChild(BuildContext context, Widget? child) {
        return ProxyProvider0<AppTheme>(
          update: (context, _) {
            final baseTheme = Provider.of<AppTheme>(context);
    
            return PartialAppTheme(
              baseTheme,
              property1: property1,
            );
          },
          child: child,
        );
      }
    }
    

    PartialAppThemeProvider attempts to "override" the AppTheme provided by an ancestor based on that ancestor value and a widget parameter.

    Full reproduction code and assertion failure stack trace
    import 'package:flutter/material.dart';
    import 'package:provider/provider.dart';
    import 'package:provider/single_child_widget.dart';
    
    void main() {
      runApp(const MyApp());
    }
    
    class MyApp extends StatelessWidget {
      const MyApp({super.key});
    
      @override
      Widget build(BuildContext context) {
        return Provider<AppTheme>(
          create: (context) => AppTheme(),
          child: MaterialApp(
            title: 'Flutter Demo',
            theme: ThemeData(
              primarySwatch: Colors.blue,
            ),
            home: const HomePage(),
          ),
        );
      }
    }
    
    class HomePage extends StatefulWidget {
      const HomePage({super.key});
    
      @override
      State<HomePage> createState() => _HomePageState();
    }
    
    class _HomePageState extends State<HomePage> {
      late bool _themeChanged = false;
    
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          appBar: AppBar(),
          body: Column(
            children: [
              const ThemedWidget(),
              const Divider(),
              PartialAppThemeProvider(
                property1:
                    _themeChanged ? 'PartialProperty1' : 'ChangedPartialProperty1',
                child: const ThemedWidget(),
              ),
              const Divider(),
              TextButton(
                onPressed: () {
                  setState(() {
                    _themeChanged = !_themeChanged;
                  });
                },
                child: Text('Change Theme'),
              ),
            ],
          ),
        );
      }
    }
    
    class ThemedWidget extends StatelessWidget {
      const ThemedWidget({super.key});
    
      @override
      Widget build(BuildContext context) {
        final theme = context.watch<AppTheme>();
    
        return Padding(
          padding: const EdgeInsets.all(8.0),
          child: Column(
            children: [
              Text('property1: ${theme.property1}'),
              Text('property2: ${theme.property2}'),
            ],
          ),
        );
      }
    }
    
    class PartialAppThemeProvider extends SingleChildStatelessWidget {
      const PartialAppThemeProvider({
        super.key,
        super.child,
        required this.property1,
      });
    
      final String property1;
    
      @override
      Widget buildWithChild(BuildContext context, Widget? child) {
        return ProxyProvider0<AppTheme>(
          update: (context, _) {
            final baseTheme = Provider.of<AppTheme>(context);
    
            return PartialAppTheme(
              baseTheme,
              property1: property1,
            );
          },
          child: child,
        );
      }
    }
    
    class AppTheme {
      final String property1 = 'AppThemeProperty1';
      final String property2 = 'AppThemeProperty2';
    }
    
    class PartialAppTheme implements AppTheme {
      final AppTheme baseTheme;
    
      @override
      final String property1;
    
      @override
      String get property2 => baseTheme.property2;
    
      PartialAppTheme(this.baseTheme, {required this.property1});
    }
    

    Assertion failure stack trace:

    ═══════ Exception caught by widgets library ═══════════════════════════════════
    The following assertion was thrown building _InheritedProviderScope<AppTheme?>(dirty, dependencies: [_InheritedProviderScope<AppTheme?>], value: Instance of 'PartialAppTheme'):
    'package:flutter/src/widgets/framework.dart': Failed assertion: line 5472 pos 14: '() {
    package:flutter/…/widgets/framework.dart:5472
            // check that it really is our descendant
            Element? ancestor = dependent._parent;
            while (ancestor != this && ancestor != null) {
              ancestor = ancestor._parent;
            }
            return ancestor == this;
          }()': is not true.
    
    
    The relevant error-causing widget was
    ProxyProvider0<AppTheme>
    lib/main.dart:95
    When the exception was thrown, this was the stack
    #2      InheritedElement.notifyClients
    package:flutter/…/widgets/framework.dart:5472
    #3      _InheritedProviderScopeElement.build
    package:provider/src/inherited_provider.dart:552
    #4      ComponentElement.performRebuild
    package:flutter/…/widgets/framework.dart:4878
    #5      Element.rebuild
    package:flutter/…/widgets/framework.dart:4604
    #6      ProxyElement.update
    package:flutter/…/widgets/framework.dart:5228
    #7      _InheritedProviderScopeElement.update
    package:provider/src/inherited_provider.dart:523
    #8      Element.updateChild
    package:flutter/…/widgets/framework.dart:3570
    #9      ComponentElement.performRebuild
    package:flutter/…/widgets/framework.dart:4904
    #10     Element.rebuild
    package:flutter/…/widgets/framework.dart:4604
    #11     StatelessElement.update
    package:flutter/…/widgets/framework.dart:4956
    #12     Element.updateChild
    package:flutter/…/widgets/framework.dart:3570
    #13     ComponentElement.performRebuild
    package:flutter/…/widgets/framework.dart:4904
    #14     Element.rebuild
    package:flutter/…/widgets/framework.dart:4604
    #15     StatelessElement.update
    package:flutter/…/widgets/framework.dart:4956
    #16     Element.updateChild
    package:flutter/…/widgets/framework.dart:3570
    #17     RenderObjectElement.updateChildren
    package:flutter/…/widgets/framework.dart:5904
    #18     MultiChildRenderObjectElement.update
    package:flutter/…/widgets/framework.dart:6460
    #19     Element.updateChild
    package:flutter/…/widgets/framework.dart:3570
    #20     ComponentElement.performRebuild
    package:flutter/…/widgets/framework.dart:4904
    #21     Element.rebuild
    package:flutter/…/widgets/framework.dart:4604
    #22     StatelessElement.update
    package:flutter/…/widgets/framework.dart:4956
    #23     Element.updateChild
    package:flutter/…/widgets/framework.dart:3570
    #24     ComponentElement.performRebuild
    package:flutter/…/widgets/framework.dart:4904
    #25     Element.rebuild
    package:flutter/…/widgets/framework.dart:4604
    #26     StatelessElement.update
    package:flutter/…/widgets/framework.dart:4956
    #27     Element.updateChild
    package:flutter/…/widgets/framework.dart:3570
    #28     ComponentElement.performRebuild
    package:flutter/…/widgets/framework.dart:4904
    #29     Element.rebuild
    package:flutter/…/widgets/framework.dart:4604
    #30     ProxyElement.update
    package:flutter/…/widgets/framework.dart:5228
    #31     Element.updateChild
    package:flutter/…/widgets/framework.dart:3570
    #32     ComponentElement.performRebuild
    package:flutter/…/widgets/framework.dart:4904
    #33     Element.rebuild
    package:flutter/…/widgets/framework.dart:4604
    #34     ProxyElement.update
    package:flutter/…/widgets/framework.dart:5228
    #35     Element.updateChild
    package:flutter/…/widgets/framework.dart:3570
    #36     RenderObjectElement.updateChildren
    package:flutter/…/widgets/framework.dart:5904
    #37     MultiChildRenderObjectElement.update
    package:flutter/…/widgets/framework.dart:6460
    #38     Element.updateChild
    package:flutter/…/widgets/framework.dart:3570
    #39     ComponentElement.performRebuild
    package:flutter/…/widgets/framework.dart:4904
    #40     Element.rebuild
    package:flutter/…/widgets/framework.dart:4604
    #41     ProxyElement.update
    package:flutter/…/widgets/framework.dart:5228
    #42     Element.updateChild
    package:flutter/…/widgets/framework.dart:3570
    #43     ComponentElement.performRebuild
    package:flutter/…/widgets/framework.dart:4904
    #44     StatefulElement.performRebuild
    package:flutter/…/widgets/framework.dart:5050
    #45     Element.rebuild
    package:flutter/…/widgets/framework.dart:4604
    #46     StatefulElement.update
    package:flutter/…/widgets/framework.dart:5082
    #47     Element.updateChild
    package:flutter/…/widgets/framework.dart:3570
    #48     ComponentElement.performRebuild
    package:flutter/…/widgets/framework.dart:4904
    #49     StatefulElement.performRebuild
    package:flutter/…/widgets/framework.dart:5050
    #50     Element.rebuild
    package:flutter/…/widgets/framework.dart:4604
    #51     StatefulElement.update
    package:flutter/…/widgets/framework.dart:5082
    #52     Element.updateChild
    package:flutter/…/widgets/framework.dart:3570
    #53     ComponentElement.performRebuild
    package:flutter/…/widgets/framework.dart:4904
    #54     Element.rebuild
    package:flutter/…/widgets/framework.dart:4604
    #55     ProxyElement.update
    package:flutter/…/widgets/framework.dart:5228
    #56     Element.updateChild
    package:flutter/…/widgets/framework.dart:3570
    #57     ComponentElement.performRebuild
    package:flutter/…/widgets/framework.dart:4904
    #58     StatefulElement.performRebuild
    package:flutter/…/widgets/framework.dart:5050
    #59     Element.rebuild
    package:flutter/…/widgets/framework.dart:4604
    #60     StatefulElement.update
    package:flutter/…/widgets/framework.dart:5082
    #61     Element.updateChild
    package:flutter/…/widgets/framework.dart:3570
    #62     SingleChildRenderObjectElement.update
    package:flutter/…/widgets/framework.dart:6307
    #63     Element.updateChild
    package:flutter/…/widgets/framework.dart:3570
    #64     ComponentElement.performRebuild
    package:flutter/…/widgets/framework.dart:4904
    #65     Element.rebuild
    package:flutter/…/widgets/framework.dart:4604
    #66     ProxyElement.update
    package:flutter/…/widgets/framework.dart:5228
    #67     Element.updateChild
    package:flutter/…/widgets/framework.dart:3570
    #68     SingleChildRenderObjectElement.update
    package:flutter/…/widgets/framework.dart:6307
    #69     Element.updateChild
    package:flutter/…/widgets/framework.dart:3570
    #70     ComponentElement.performRebuild
    package:flutter/…/widgets/framework.dart:4904
    #71     StatefulElement.performRebuild
    package:flutter/…/widgets/framework.dart:5050
    #72     Element.rebuild
    package:flutter/…/widgets/framework.dart:4604
    #73     StatefulElement.update
    package:flutter/…/widgets/framework.dart:5082
    #74     Element.updateChild
    package:flutter/…/widgets/framework.dart:3570
    #75     ComponentElement.performRebuild
    package:flutter/…/widgets/framework.dart:4904
    #76     StatefulElement.performRebuild
    package:flutter/…/widgets/framework.dart:5050
    #77     Element.rebuild
    package:flutter/…/widgets/framework.dart:4604
    #78     StatefulElement.update
    package:flutter/…/widgets/framework.dart:5082
    #79     Element.updateChild
    package:flutter/…/widgets/framework.dart:3570
    #80     ComponentElement.performRebuild
    package:flutter/…/widgets/framework.dart:4904
    #81     Element.rebuild
    package:flutter/…/widgets/framework.dart:4604
    #82     ProxyElement.update
    package:flutter/…/widgets/framework.dart:5228
    #83     Element.updateChild
    package:flutter/…/widgets/framework.dart:3570
    #84     ComponentElement.performRebuild
    package:flutter/…/widgets/framework.dart:4904
    #85     Element.rebuild
    package:flutter/…/widgets/framework.dart:4604
    #86     ProxyElement.update
    package:flutter/…/widgets/framework.dart:5228
    #87     Element.updateChild
    package:flutter/…/widgets/framework.dart:3570
    #88     ComponentElement.performRebuild
    package:flutter/…/widgets/framework.dart:4904
    #89         Element.rebuild
    package:flutter/…/widgets/framework.dart:4604
    #90     ProxyElement.update
    package:flutter/…/widgets/framework.dart:5228
    #91     Element.updateChild
    package:flutter/…/widgets/framework.dart:3570
    #92     ComponentElement.performRebuild
    package:flutter/…/widgets/framework.dart:4904
    #93     StatefulElement.performRebuild
    package:flutter/…/widgets/framework.dart:5050
    #94     Element.rebuild
    package:flutter/…/widgets/framework.dart:4604
    #95     StatefulElement.update
    package:flutter/…/widgets/framework.dart:5082
    #96     Element.updateChild
    package:flutter/…/widgets/framework.dart:3570
    #97     ComponentElement.performRebuild
    package:flutter/…/widgets/framework.dart:4904
    #98     Element.rebuild
    package:flutter/…/widgets/framework.dart:4604
    #99     ProxyElement.update
    package:flutter/…/widgets/framework.dart:5228
    #100    Element.updateChild
    package:flutter/…/widgets/framework.dart:3570
    #101    ComponentElement.performRebuild
    package:flutter/…/widgets/framework.dart:4904
    #102    StatefulElement.performRebuild
    package:flutter/…/widgets/framework.dart:5050
    #103    Element.rebuild
    package:flutter/…/widgets/framework.dart:4604
    #104    StatefulElement.update
    package:flutter/…/widgets/framework.dart:5082
    #105    Element.updateChild
    package:flutter/…/widgets/framework.dart:3570
    #106    ComponentElement.performRebuild
    package:flutter/…/widgets/framework.dart:4904
    #107    StatefulElement.performRebuild
    package:flutter/…/widgets/framework.dart:5050
    #108    Element.rebuild
    package:flutter/…/widgets/framework.dart:4604
    #109    BuildOwner.buildScope
    package:flutter/…/widgets/framework.dart:2667
    #110    WidgetsBinding.drawFrame
    package:flutter/…/widgets/binding.dart:882
    #111    RendererBinding._handlePersistentFrameCallback
    package:flutter/…/rendering/binding.dart:378
    #112    SchedulerBinding._invokeFrameCallback
    package:flutter/…/scheduler/binding.dart:1175
    #113    SchedulerBinding.handleDrawFrame
    package:flutter/…/scheduler/binding.dart:1104
    #114    SchedulerBinding._handleDrawFrame
    package:flutter/…/scheduler/binding.dart:1015
    #115    _invoke (dart:ui/hooks.dart:148:13)
    #116    PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:318:5)
    #117    _drawFrame (dart:ui/hooks.dart:115:31)
    (elided 2 frames from class _AssertionError)
    ════════════════════════════════════════════════════════════════════════════════
    

    Expected behavior My expectation is that I can use ProxyProvider to both depend on and provide a new value for the same type.

    I can work around the issue by avoiding ProxyProvider and tracking the ancestor dependency manually by using Provider.of<AppTheme>(context) in a stateful widget:

    class PartialAppThemeProvider extends SingleChildStatefulWidget {
      const PartialAppThemeProvider({
        super.key,
        super.child,
        required this.property1,
      });
    
      final String? property1;
    
      @override
      State<PartialAppThemeProvider> createState() =>
          _PartialAppThemeProviderState();
    }
    
    class _PartialAppThemeProviderState
        extends SingleChildState<PartialAppThemeProvider> {
      late AppTheme _theme;
    
      @override
      void didChangeDependencies() {
        super.didChangeDependencies();
    
        _updateTheme();
      }
    
      @override
      void didUpdateWidget(covariant PartialAppThemeProvider oldWidget) {
        super.didUpdateWidget(oldWidget);
    
        if (widget.property1 != oldWidget.property1) {
          _updateTheme();
        }
      }
    
      @override
      Widget buildWithChild(BuildContext context, Widget? child) {
        return Provider<AppTheme>.value(
          value: _theme,
          child: child,
        );
      }
    
      void _updateTheme() {
        final baseTheme = Provider.of<AppTheme>(context);
    
        if (widget.property1 != null) {
          setState(() {
            _theme = PartialAppTheme(
              baseTheme,
              property1: widget.property1!,
            );
          });
        } else {
          setState(() {
            _theme = baseTheme;
          });
        }
      }
    }
    
    bug needs triage 
    opened by jjoelson 1
  • After Hot Restart ChangeNotifierProvider does not update value.

    After Hot Restart ChangeNotifierProvider does not update value.

    I am facing the same issue. After a hot restart, the value of ChangeNotier does not update.

    Screenshot 2022-12-20 at 4 50 53 PM Screenshot 2022-12-20 at 4 35 12 PM

    So, first, I call tryAutologout(), and it's working okay, but after that, when I try to fetch the value of userData at line 86, it gives a null value. I have checked that context is not broken or dirty, but the value of Auth is not updated.

    question 
    opened by AnkitPanchal10 4
  • Implement search capability to provider.

    Implement search capability to provider.

    Implement search capability to provider. A discussion opened here [https://github.com/rrousselGit/provider/discussions/737] 1- Add searchCallback to Provider.of() method to give the user the ability to search for a specific value. 2- Add searchCallback to context.read() and context.watch() methods and pass it to Provider.of() method. 3- Add SearchContext to expose context.search() method. 4- Export SearchContext in /lib/provider.dart

    opened by Ayad-Ben-Saliem 2
  • Improve Selector documentation

    Improve Selector documentation

    https://pub.dev/documentation/provider/latest/provider/Selector-class.html

    You give a complex example with tuple at once. It looks difficult for beginners. Consider adding an example for 1 value before, like this:

    Here's an example:
    
    Selector<Foo, Bar>(
      selector: (_, foo) => foo.bar,  // will rebuild only when `bar` changes
      builder: (_, data, __) {
        return Text('${data.item}');
      }
    )
    
    To select multiple values without having to write a class... // Tuple example
    
    documentation 
    opened by subzero911 0
  • DevTools 2.8 don't show a Providers details

    DevTools 2.8 don't show a Providers details

    Describe the bug The Provider tab in version 2.8 of the DevTools shows the list of Providers available in an app, but it doesn't let developers inspect the content of the Provider itself.

    Below a screenshot of my Provider tab: Screen Shot 2021-12-09 at 6 06 58 PM

    bug 
    opened by vkammerer 0
Owner
Remi Rousselet
Flutter enthusiast. You'll find me on stackoverflow. Or as a speaker in Flutter meetups
Remi Rousselet
Simple global state management for Flutter

Slices Slices is a minimalist state manegement, focused specifically for applications that needs a global state where different "pieces" of the applic

Erick 5 Jun 15, 2021
LakhanKumawat ᵖ⁺ 12 Dec 6, 2022
A simple but powerful path-based navigation router with full web-browser and deeplink support.

nav_stack A simple but powerful path-based routing system, based on MaterialApp.router (Nav 2.0). It has browser / deeplink support and maintains a hi

gskinner team 22 Nov 28, 2022
A simple but powerful path-based navigation router with full web-browser and deeplink support.

nav_stack A simple but powerful path-based routing system, based on MaterialApp.router (Nav 2.0). It has browser / deeplink support and maintains a hi

gskinner team 22 Nov 28, 2022
Simple but pretty cool birthday countdown app built using flutter

Simple but pretty cool birthday countdown app "For You" ?? Don't forget to star ⭐ the repo if you like what you I have created ?? . ?? GIF of a sample

Ruslan Hasanov 6 Aug 13, 2022
This is an open source Tips & Tricks for Flutter, that helps flutter Developers write simple but powerful dart codes.

Showcasing-flutter - This is an open source Tips & Tricks for Flutter, that helps flutter Developers write simple but powerful dart codes.

Paul Edeme'kong - Flutter Fairy 1 Jan 4, 2022
Simple but powerfull Flutter navigation with riverpod and Navigator 2.0

Riverpod navigation If you are interested in the motivation why the package was created and a detailed description of what problems it solves, read th

pavelpz 20 Dec 13, 2022
A Simple but elegant Calculator app made with Flutter using Google's Material Design with Currency (Exchange Rate) and Unit Converter.

Calculator A Simple but elegant Calculator app made with Flutter using Google's Material Design with Currency (Exchange Rate) and Unit Converter. Down

Hemant Rajput 15 Dec 7, 2022
This is the semester 6 Mobile App Development Course project. So maybe the final project may not make sense ;) but it is a good place to start learning Flutter.

?? Overview MAD-Sem6 is a Mobile Development Course Project that contains Basic ➡️ Medium implementation of different widgets. As a whole it doesn't m

Muhammad Tayyab Asghar 3 Aug 9, 2021
Plant Manager is an application that was developed on Rocketseat NLW5 with React Native but was rebuilt using Flutter.

Technologies | Project | Layout | License ?? Technologies This project was developed with the following technologies: Flutter ?? Project Plant Manager

Mayderson 7 Aug 11, 2021
Hooks but for and of Flutter

reactives A new way for Flutter to reuse/group common logic. Think of them like React hooks but for and of flutter. Idea copied from the lit world Mot

Ripe Mango 27 Dec 22, 2022
Automatically generate profile picture with random first name and background color. But you can still provide pictures if you have them. As the default color, based on the name of the first letter. :fire: :fire: :fire:

FLUTTER PROFILE PICTURE Automatically generate profile picture with random first name and background color. But you can still provide pictures if you

Aditya Dharmawan Saputra 10 Dec 20, 2022
This is not an app. I made this architecture to build robust and easy-to-maintain products but in a faster way.

simple_architecture_flutter This is not an app. I made this architecture to build robust and easy-to-maintain products but in a faster way. Info I use

Batuhan Karababa 9 Oct 28, 2022
Flutter Triple Status Button can use toggle button but in three statuses.

triple_status_button Triple Status Button. Flutter Triple Status Button can use toggle button but in three statuses. Property Description height heigh

MahdiBagjani 2 Nov 13, 2021
Flutter package: Similar to a ListView, but lets you programmatically jump to any item, by index.

indexed_list_view Similar to a ListView, but lets you programmatically jump to any item, by index. The index jump happens instantly, no matter if you

Marcelo Glasberg 244 Dec 27, 2022
Try to clone satria, with same feature but better ui

satria A new Flutter project. Getting Started This project is a starting point for a Flutter application. A few resources to get you started if this i

Gesya Gayatree Solih 9 Nov 8, 2021
Overlay/OverlayEntry, but better

Call for maintainer I (@rrousselGit) am sadly unable to maintain flutter_portal at the moment due to a lack of time, and would like to find a new main

Remi Rousselet 401 Jan 2, 2023
A reactive key-value store for Flutter projects. Like shared_preferences, but with Streams.

streaming_shared_preferences A reactive key-value store for Flutter projects. streaming_shared_preferences adds reactive functionality on top of share

Iiro Krankka 244 Dec 22, 2022
Highly customizable, feature-packed calendar works like google calendar but with more features.

Beca [In Progress] Beca is a Calendar that you could manage your daily tasks and schedule meetings with your friends just like google calendar Concept

Mohammad Javad Hossieni 19 Nov 15, 2022