{"id":23153918,"url":"https://github.com/polilluminato/riverpod-zero-hero-flutter","last_synced_at":"2026-05-17T00:50:24.907Z","repository":{"id":253302037,"uuid":"843085701","full_name":"polilluminato/riverpod-zero-hero-flutter","owner":"polilluminato","description":"Repository per il mio talk su Riverpod per The Communities Bay","archived":false,"fork":false,"pushed_at":"2025-01-02T07:00:25.000Z","size":1162,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-15T15:45:42.089Z","etag":null,"topics":["flutter","flutter-app","flutter-demo","flutter-example","flutter-example-app","riverpod","riverpod-examples"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/polilluminato.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"polilluminato","buy_me_a_coffee":"polilluminato","custom":"https://paypal.me/polilluminato"}},"created_at":"2024-08-15T18:47:31.000Z","updated_at":"2025-01-02T07:00:29.000Z","dependencies_parsed_at":"2025-04-04T16:42:43.132Z","dependency_job_id":"003a0e60-210b-42fb-acc4-96034dd87c8e","html_url":"https://github.com/polilluminato/riverpod-zero-hero-flutter","commit_stats":null,"previous_names":["polilluminato/riverpod-zero-hero-flutter"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/polilluminato/riverpod-zero-hero-flutter","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/polilluminato%2Friverpod-zero-hero-flutter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/polilluminato%2Friverpod-zero-hero-flutter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/polilluminato%2Friverpod-zero-hero-flutter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/polilluminato%2Friverpod-zero-hero-flutter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/polilluminato","download_url":"https://codeload.github.com/polilluminato/riverpod-zero-hero-flutter/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/polilluminato%2Friverpod-zero-hero-flutter/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33124141,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-16T18:38:32.183Z","status":"ssl_error","status_checked_at":"2026-05-16T18:38:29.903Z","response_time":115,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["flutter","flutter-app","flutter-demo","flutter-example","flutter-example-app","riverpod","riverpod-examples"],"created_at":"2024-12-17T20:11:09.051Z","updated_at":"2026-05-17T00:50:24.892Z","avatar_url":"https://github.com/polilluminato.png","language":"C++","funding_links":["https://github.com/sponsors/polilluminato","https://buymeacoffee.com/polilluminato","https://paypal.me/polilluminato"],"categories":[],"sub_categories":[],"readme":"![Flutter Riverpod - Gestione dello stato da zero a hero](.github/cover.jpg)\n\n# Flutter Riverpod: gestione dello Stato da Zero a Hero\n\nQuesto repository contiene il codice dell'applicazione demo che ho realizzato per il talk [Flutter Riverpod: gestione dello Stato da Zero a Hero](https://thecmmbay.com/eventi/flutter-riverpod-gestione-dello-stato-da-zero-a-hero-ko7mkrjyw) per [The Communities Bay](https://thecmmbay.com/).\n\n📺 Video della diretta su YouTube: [Flutter Riverpod: gestione dello Stato da Zero a Hero • Community Mobile Dev di TCB 5](https://www.youtube.com/watch?v=pW8hAEHYk54)\n\n## Sommario\n\nSei uno sviluppatore interessato a Flutter e vuoi imparare a gestire lo stato delle tue applicazioni in modo efficiente? Allora non perdere il nostro entusiasmante evento dedicato al framework Flutter Riverpod!\n\nDurante il talk, dopo un’introduzione a Riverpod, vedremo come questo permetta la gestione dello stato in Flutter attraverso l'uso dei provider, offrendoti tutti gli strumenti per sfruttare questi oggetti Dart nei tuoi progetti.\n\nChe tu sia un principiante o un esperto di Flutter, questo talk ti fornirà conoscenze approfondite sulla gestione dello stato e ti aiuterà a migliorare le tue competenze e ad elevare le tue capacità di sviluppo.\n\nIn dettaglio, vedremo:\n\n* Introduzione a Riverpod\n* Provider\n* StateProvider\n* Notifier e AsyncNotifier\n* FutureProvider e StreamProvider\n\n*Questo evento non è affiliato, sponsorizzato o approvato da Google LLC. \"Flutter\" e \"Dart\" sono marchi registrati di Google LLC. I contenuti di questo evento sono puramente informativi ed educativi e non implicano alcuna associazione con le aziende menzionate.*\n\n## Provider\n\nDurante la presentazione mi sono occupato dei seguenti provider:\n\n* [StateProvider](https://riverpod.dev/docs/providers/state_provider)\n* [(Async)NotifierProvider](https://riverpod.dev/docs/providers/notifier_provider)\n\n### Code Generation\n\nPer semplificare la scrittura dei provider, è possibile sfruttare la code generation di Flutter. In questo progetto, è stata impiegata per realizzare il notifier provider, strutturato come segue:\n\n```dart\npart 'notifier_provider.g.dart';\n@riverpod\nclass Pizza extends _$Pizza {\n  @override\n  MyPizza build() {\n    return MyPizza(\n        linkImpasto: impastoOptionList[0].link,\n        linkCondimento: condimentoOptionList[0].link,\n        linkSalsa: salsaOptionList[0].link);\n  }\n\n  void changeImpasto(String newImpastoLink) {\n    state = state.copyWith(linkImpasto: newImpastoLink);\n  }\n\n  void changeSalsa(String newSalsaLink) {\n    state = state.copyWith(linkSalsa: newSalsaLink);\n  }\n\n  void changeCondimento(String newCondimentoLink) {\n    state = state.copyWith(linkCondimento: newCondimentoLink);\n  }\n}\n```\n\nVolendolo scrivere senza la code generation il risultato sarebbe questo:\n\n```dart\nclass PizzaNotifier extends Notifier\u003cMyPizza\u003e {\n  @override\n  MyPizza build() {\n    return MyPizza(\n        linkImpasto: impastoOptionList[0].link,\n        linkCondimento: condimentoOptionList[0].link,\n        linkSalsa: salsaOptionList[0].link);\n  }\n\n  void changeImpasto(String newImpastoLink) {\n    state = state.copyWith(linkImpasto: newImpastoLink);\n  }\n\n  void changeSalsa(String newSalsaLink) {\n    state = state.copyWith(linkSalsa: newSalsaLink);\n  }\n\n  void changeCondimento(String newCondimentoLink) {\n    state = state.copyWith(linkCondimento: newCondimentoLink);\n  }\n}\n\nfinal pizzaProvider =\n    NotifierProvider\u003cPizzaNotifier, MyPizza\u003e(() =\u003e PizzaNotifier());\n```\n\n### Approfondimenti e link\n\n* [Slide della presentazione](slides/RiverpodZeroToHero-TheCommBay.pdf)\n* [Documentazione di Riverpod](https://riverpod.dev/)\n* [Flutter Riverpod 2.0: The Ultimate Guide](https://codewithandrea.com/articles/flutter-state-management-riverpod/)\n* [Code Generation with Dart \u0026 Flutter: The Ultimate Guide](https://codewithandrea.com/articles/dart-flutter-code-generation/)\n\n## 📱 Screenshots\n\n| Homepage | StateProvider | Notifier |\n|-|-|-|\n|![](screenshots/homepage.png)|![](screenshots/state_provider_page.png)|![](screenshots/notifier_page.png)|\n\n\n## 💎 Contribuire\n\nSe trovate un errore, non esitate a segnalarlo come issue e a descriverlo nel modo migliore possibile.\nSe vuoi contribuire con del codice, crea prima una issue.\n\n![Fork and contribute](https://img.shields.io/badge/Ask%20me-anything-1abc9c.svg)\n\n## 📋 Licenza\n\nFlutter Riverpod da Zero a Hero è rilasciato con [licenza MIT](LICENSE.md). È possibile utilizzare il codice per qualsiasi scopo, compresi i progetti commerciali.\n\n[![license](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpolilluminato%2Friverpod-zero-hero-flutter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpolilluminato%2Friverpod-zero-hero-flutter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpolilluminato%2Friverpod-zero-hero-flutter/lists"}