Giter Club home page Giter Club logo

Comments (10)

rrousselGit avatar rrousselGit commented on May 24, 2024 2

Oh, that kind of access. I thought you talked about ancestorStateOfExactType, my bad.

With hooks you shouldn't use methods, and instead inline functions inside the build method:

class Foo extends HookWidget {
  @override
  Widget build(BuildContext context) {
    final counter = useState(0);

    void incrementCounter() {
       counter.value++;
    }

    return RaisedButton(
      onPresssed: incrementCounter,
      child: Text(counter.value.toString()),
    );
  }
}

from flutter_hooks.

devwithmnasir avatar devwithmnasir commented on May 24, 2024 1

Oh, that kind of access. I thought you talked about ancestorStateOfExactType, my bad.

With hooks you shouldn't use methods, and instead inline functions inside the build method:

class Foo extends HookWidget {
  @override
  Widget build(BuildContext context) {
    final counter = useState(0);

    void incrementCounter() {
       counter.value++;
    }

    return RaisedButton(
      onPresssed: incrementCounter,
      child: Text(counter.value.toString()),
    );
  }
}

If we create our methods within the build method in Flutter, will it not impact performance because the method will be recreated every time the build method is called?

from flutter_hooks.

rrousselGit avatar rrousselGit commented on May 24, 2024

This is generally considered a bad practice to access the State class. It is an implementation detail.

Instead you should explicitly expose the desired values through an Inheritedwidget (provider package?) or constructors.

from flutter_hooks.

bobmoff avatar bobmoff commented on May 24, 2024

Sorry for the late reply, but I don't follow what you mean that is bad practise to "access the state".

When using "flutter create" to setup a new project, the _MyHomePageState has a method called _incrementCounter that modifies the state of the widget. Is this bad practise?

Using a HookWidget, should methods on this object never be able to modify its own state ?

from flutter_hooks.

bobmoff avatar bobmoff commented on May 24, 2024

Ahh, ofc. Makes sense. Dont know why I didnt think of that.

Thanks for helping out!

from flutter_hooks.

rrousselGit avatar rrousselGit commented on May 24, 2024

This reinforces the idea that a class is a bit pointless with hooks.

If you haven't already, I encourage you to give functional_widget a try!

from flutter_hooks.

bobmoff avatar bobmoff commented on May 24, 2024

I will check it out, thx

from flutter_hooks.

stephenwil avatar stephenwil commented on May 24, 2024

Hitting this issue myself, but figured the only way around it is to have functions, vars, etc defined within the build method.
Got an example of the functional_widget you mention?

from flutter_hooks.

rrousselGit avatar rrousselGit commented on May 24, 2024

figured the only way around it is to have functions, vars, etc defined within the build method.

That's expected. Do that.

from flutter_hooks.

dorklord23 avatar dorklord23 commented on May 24, 2024

Oh, that kind of access. I thought you talked about ancestorStateOfExactType, my bad.
With hooks you shouldn't use methods, and instead inline functions inside the build method:

class Foo extends HookWidget {
  @override
  Widget build(BuildContext context) {
    final counter = useState(0);

    void incrementCounter() {
       counter.value++;
    }

    return RaisedButton(
      onPresssed: incrementCounter,
      child: Text(counter.value.toString()),
    );
  }
}

If we create our methods within the build method in Flutter, will it not impact performance because the method will be recreated every time the build method is called?

I saw a similar SO question and the answers unanimously said it's a bad practice.

from flutter_hooks.

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.