Flutter Riverpod ref.read() vs ref.listen() vs ref.watch()

Flutter Riverpod ref.read() vs ref.listen() vs ref.watch()

    What is the purpose and difference between these functions?

    read()

    Use read to the get the value of/in provider just once (one-time read). It's not recommened to use inside build() method.

    watch()

    Use watch to the get the value of/in provider the first time and every time the value changes (see it like you're subscribing to the provider, so you get notified any time there's a change)

    listen()

    listen is similar to watch. The main difference is the return type. watch returns the new value directly, listen returns a void but gives access to the new value and the old value with a callback (See examples below)

     

    Where and where not can I use these functions?

    You can use read in places like initState , callbacks like onPressed etc. watch and listen should not be called asynchronously, like inside an onPressed of an ElevatedButton. Nor should it be used inside initState and other State life-cycles.

     

    When should I use these functions?

    read()

    Use read when you want to value of the provider only once.

    watch()

    Use watch when you want to always get the value.

    Courses


    Recommended posts


    Recent posts