GithubHelp home page GithubHelp logo

Comments (15)

rrousselGit avatar rrousselGit commented on May 14, 2024 1

Bad idea, at least for now.
A Computed isn't fully destroyed when no-longer used. It'll likely change in the future, but for now you'd have a leak

from riverpod.

rrousselGit avatar rrousselGit commented on May 14, 2024 1

If you want a "select", there's one for hooks:

useProvider(myProvider.select((value) => value.foo))

from riverpod.

rrousselGit avatar rrousselGit commented on May 14, 2024

You could set them as static variables on your Model

Like:

class MyNotifier extends StateNotifier {
  static final myComputed =Computed(...)
}

Or keep them all in the same file

from riverpod.

tbm98 avatar tbm98 commented on May 14, 2024

Is there any memory problem if I have many static variables ?

from riverpod.

rrousselGit avatar rrousselGit commented on May 14, 2024

No. That's the same thing as using global variables.

from riverpod.

tbm98 avatar tbm98 commented on May 14, 2024

Yep. Thanks!
I'll use static variables

from riverpod.

kaboc avatar kaboc commented on May 14, 2024

What if it's not global nor static?
For example, is it also fine to use Computed in every method where the value is necessary, like the way we use select() of the provider package?
My concern is especially whether the computed is disposed of and stops listening properly at/after the end of each method scope.

class Counter with ChangeNotifier {
  int value1;
  int value2;

  ...
}

...

@override
Widget build(BuildContext context) {
  final computed = Computed((read) => read(counterProvider).value1);
  return Text('value: ${read(computed)});
}

from riverpod.

kaboc avatar kaboc commented on May 14, 2024

OK, I'll think about using hooks, hoping it'll be improved in the future.
Thanks anyway!

from riverpod.

rrousselGit avatar rrousselGit commented on May 14, 2024

from riverpod.

tbm98 avatar tbm98 commented on May 14, 2024

Hi.
I not found select function on provider
Screen Shot 2020-06-24 at 5 08 16 PM

from riverpod.

kaboc avatar kaboc commented on May 14, 2024

@rrousselGit
My notifiers extending ChangeNotifier (not StateNotifier) have more than one properties, so I use select() to pick out only part of them for efficiency, preventing unnecessary rebuilds. If the same control is not possible with Computed, all computed values have to be declared globally or as static properties of some class(es), which will end up in having a long declaration list of Computed...

But it may not be so bad. Probably I'm just having some difficulty, at this early stage, accepting the fact that Computed and select() seem similar but are used differently. I'll get used to it soon.

from riverpod.

kaboc avatar kaboc commented on May 14, 2024

@tbm98
Have you imported hooks_riverpod correctly ?

from riverpod.

tbm98 avatar tbm98 commented on May 14, 2024

@kaboc no, but I think select function only in ChangeNotifier

from riverpod.

rrousselGit avatar rrousselGit commented on May 14, 2024

But it may not be so bad. Probably I'm just having some difficulty, at this early stage, accepting the fact that Computed and select() seem similar but are used differently. I'll get used to it soon.

Computed is cached and shared
select is local and not cached

from riverpod.

kaboc avatar kaboc commented on May 14, 2024

Got it. I'll tell it to myself again and again until I accept it.

from riverpod.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.