[{"data":1,"prerenderedAt":79},["ShallowReactive",2],{"tutorial-aggiungere-un-pacchetto-da-pubdev-al-tuo-progetto-flutter":3,"comments-tutorial-aggiungere-un-pacchetto-da-pubdev-al-tuo-progetto-flutter":78},{"id":4,"title":5,"slug":6,"excerpt":7,"intro":8,"cover_image":9,"cover_remote_url":10,"cover_credit":11,"video_url":15,"video":16,"difficulty":20,"estimated_minutes":21,"flutter_version":22,"status":23,"published_at":24,"meta_title":25,"meta_description":26,"category":27,"author":31,"steps":33},79,"Aggiungere un pacchetto da pub.dev al tuo progetto Flutter","aggiungere-un-pacchetto-da-pubdev-al-tuo-progetto-flutter","Impara a cercare, valutare e installare un pacchetto da pub.dev: pubspec.yaml, flutter pub add, vincoli di versione e primo utilizzo pratico con google_fonts.","Uno dei superpoteri di Flutter è il suo ecosistema di pacchetti: su [pub.dev](https:\u002F\u002Fpub.dev) trovi migliaia di librerie pronte all'uso per fare quasi tutto, dal caricamento dei font alla gestione della fotocamera.\n\nIn questo tutorial, pensato per chi inizia, vedremo **tutto il percorso completo**: come cercare un pacchetto, come capire se è affidabile, come installarlo (con `flutter pub add` o modificando a mano il `pubspec.yaml`), che significano i numeri di versione tipo `^6.2.1` e come usarlo davvero nel codice.\n\nCome esempio pratico useremo **google_fonts**, un pacchetto semplice ma d'effetto che permette di applicare centinaia di font Google alla tua app senza scaricare nulla manualmente.\n\n> Requisiti: Flutter SDK installato e funzionante (`flutter doctor` senza errori bloccanti) e un editor come VS Code o Android Studio.","https:\u002F\u002Fflutter.it\u002Fstorage\u002Ftutorials\u002F0e9ec715-4207-442b-8d3b-072ea6add6b3.jpg","https:\u002F\u002Fimages.unsplash.com\u002Fphoto-1719255416441-ed77915f28de?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3w5NzA2NTJ8MHwxfHJhbmRvbXx8fHx8fHx8fDE3ODgwNjQyNjh8&ixlib=rb-4.1.0&q=80&w=1080",{"name":12,"author_url":13,"photo_url":14},"Glen Carrie","https:\u002F\u002Funsplash.com\u002F@glencarrie","https:\u002F\u002Funsplash.com\u002Fphotos\u002Fa-laptop-computer-sitting-on-top-of-a-desk-JNcEcn6hK_o","https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=ACgKY8U1V6A",{"youtube_id":17,"duration_seconds":18,"published_at":19},"ACgKY8U1V6A",133,"2026-08-30T10:13:53+00:00","beginner",25,"3.x","published","2026-08-30T04:31:09+00:00","Aggiungere un pacchetto da pub.dev in Flutter","Guida per principianti: cercare, valutare e installare pacchetti da pub.dev in Flutter con pubspec.yaml, flutter pub add e vincoli di versione.",{"id":28,"name":29,"slug":30},1,"Guide","guide",{"id":28,"name":32},"Flutter Bot",[34,42,49,56,63,70],{"id":35,"position":28,"title":36,"body":37,"code_snippet":38,"code_language":39,"expected_result":40,"demo_url":41,"video_url":41},527,"Creare il progetto e conoscere il pubspec.yaml","Partiamo da un progetto pulito. Apri il terminale e crea una nuova app:\n\n```bash\nflutter create demo_pacchetti\ncd demo_pacchetti\n```\n\nNella radice del progetto trovi il file **`pubspec.yaml`**: è la \"carta d'identità\" dell'app. Qui si dichiarano nome, versione, asset, font e soprattutto le **dipendenze**, cioè i pacchetti esterni che vuoi usare.\n\nLe due sezioni che ci interessano sono:\n\n- `dependencies`: pacchetti che finiscono nell'app pubblicata (es. `http`, `google_fonts`).\n- `dev_dependencies`: pacchetti usati solo in fase di sviluppo (es. `flutter_lints`, generatori di codice). Non vengono inclusi nell'app finale.\n\n⚠️ Attenzione: YAML è **sensibile all'indentazione**. Si usano **spazi** (mai tab) e ogni dipendenza va rientrata di 2 spazi sotto `dependencies:`.","name: demo_pacchetti\ndescription: \"Progetto di esempio per imparare a usare i pacchetti.\"\npublish_to: 'none'\nversion: 1.0.0+1\n\nenvironment:\n  sdk: ^3.5.0\n\ndependencies:\n  flutter:\n    sdk: flutter\n  cupertino_icons: ^1.0.8\n\ndev_dependencies:\n  flutter_test:\n    sdk: flutter\n  flutter_lints: ^4.0.0\n\nflutter:\n  uses-material-design: true","yaml","Hai un progetto Flutter funzionante e sai individuare le sezioni `dependencies` e `dev_dependencies` nel pubspec.yaml.",null,{"id":43,"position":44,"title":45,"body":46,"code_snippet":41,"code_language":47,"expected_result":48,"demo_url":41,"video_url":41},528,2,"Cercare e valutare un pacchetto su pub.dev","Vai su [pub.dev](https:\u002F\u002Fpub.dev) e cerca `google fonts`. Prima di installare qualsiasi libreria, impara a **valutarla**: non tutti i pacchetti sono mantenuti bene.\n\nCosa guardare nella pagina del pacchetto:\n\n1. **Likes, Pub Points e Popularity**: i Pub Points (max 160) misurano qualità formale (documentazione, analisi statica, null safety, supporto piattaforme).\n2. **Badge \"Dart 3 compatible\"**: indica che il pacchetto funziona con le versioni moderne di Dart.\n3. **Piattaforme supportate**: Android, iOS, Web, Windows, macOS, Linux. Se sviluppi per il web e il pacchetto non lo supporta, cerca un'alternativa.\n4. **Data dell'ultima pubblicazione**: un pacchetto fermo da 3 anni è un campanello d'allarme.\n5. **Tab \"Installing\"**: contiene il comando esatto e la riga da mettere nel pubspec.\n6. **Tab \"Example\" e \"Readme\"**: codice pronto da copiare per il primo test.\n7. **Publisher verificato** (es. `flutter.dev`, `google.dev`, `baseflow.com`): grande garanzia di manutenzione.\n\n💡 Suggerimento: se due pacchetti fanno la stessa cosa, scegli quello con più like **e** aggiornato di recente.","dart","Sai leggere la scheda di un pacchetto su pub.dev e decidere se è affidabile per il tuo progetto.",{"id":50,"position":51,"title":52,"body":53,"code_snippet":54,"code_language":39,"expected_result":55,"demo_url":41,"video_url":41},529,3,"Installare il pacchetto con flutter pub add","Il modo più semplice e sicuro per aggiungere una dipendenza è il comando `flutter pub add`: scrive da solo la riga corretta nel `pubspec.yaml` con la versione più recente e scarica il pacchetto.\n\nEsegui nella cartella del progetto:\n\n```bash\nflutter pub add google_fonts\n```\n\nIn alternativa puoi scrivere a mano la dipendenza nel `pubspec.yaml` e poi lanciare `flutter pub get` (in VS Code il download parte in automatico al salvataggio del file).\n\nPer un pacchetto di sviluppo si usa invece:\n\n```bash\nflutter pub add dev:build_runner\n```\n\nDopo l'installazione compare (o si aggiorna) il file **`pubspec.lock`**: registra le versioni esatte usate. Va **committato su Git** nelle applicazioni, così tutto il team compila con le stesse versioni.","dependencies:\n  flutter:\n    sdk: flutter\n  cupertino_icons: ^1.0.8\n  google_fonts: ^6.2.1","Il terminale mostra \"Got dependencies!\" e nel pubspec.yaml compare la riga `google_fonts: ^6.2.1`.",{"id":57,"position":58,"title":59,"body":60,"code_snippet":61,"code_language":39,"expected_result":62,"demo_url":41,"video_url":41},530,4,"Capire i vincoli di versione (^, range e versioni fisse)","I pacchetti seguono il **versionamento semantico**: `MAJOR.MINOR.PATCH` (es. `6.2.1`).\n\n- **MAJOR** (6): cambia quando ci sono modifiche che rompono il codice esistente (*breaking changes*).\n- **MINOR** (2): nuove funzionalità retrocompatibili.\n- **PATCH** (1): correzioni di bug.\n\nIl simbolo **caret `^`** è il vincolo consigliato: `^6.2.1` significa \"da 6.2.1 incluso fino a 7.0.0 escluso\". Accetti quindi bugfix e nuove feature, ma non aggiornamenti che potrebbero rompere l'app.\n\nComandi utili:\n\n```bash\nflutter pub outdated   # elenca i pacchetti con versioni più recenti disponibili\nflutter pub upgrade    # aggiorna entro i vincoli del pubspec\nflutter pub upgrade --major-versions  # alza anche i vincoli major (attenzione!)\nflutter pub deps       # mostra l'albero delle dipendenze\n```\n\n⚠️ Evita di fissare versioni esatte (`google_fonts: 6.2.1`) senza motivo: rischi conflitti quando altri pacchetti richiedono versioni diverse.","dependencies:\n  google_fonts: ^6.2.1        # >=6.2.1 \u003C7.0.0  (consigliato)\n  altro_pacchetto: 1.4.2      # versione esatta (sconsigliato)\n  terzo_pacchetto: '>=2.0.0 \u003C3.0.0'  # range esplicito\n  quarto_pacchetto: any       # qualsiasi versione (da evitare)","Sai leggere e scegliere il vincolo di versione giusto ed eseguire un aggiornamento controllato con `flutter pub outdated`.",{"id":64,"position":65,"title":66,"body":67,"code_snippet":68,"code_language":47,"expected_result":69,"demo_url":41,"video_url":41},531,5,"Usare il pacchetto nel codice","Ora che il pacchetto è installato, va **importato** nel file Dart dove serve. La sintassi dell'import per i pacchetti esterni è sempre:\n\n```dart\nimport 'package:nome_pacchetto\u002Fnome_file.dart';\n```\n\nNel caso di `google_fonts` l'import è `package:google_fonts\u002Fgoogle_fonts.dart`. Sostituisci il contenuto di `lib\u002Fmain.dart` con il codice seguente: applichiamo il font *Poppins* a tutta l'app tramite il tema e un font diverso a un singolo `Text`.\n\n💡 In VS Code, se scrivi il nome di una classe del pacchetto (es. `GoogleFonts`) e premi `Ctrl+.` \u002F `Cmd+.`, l'editor propone di aggiungere l'import automaticamente.","import 'package:flutter\u002Fmaterial.dart';\nimport 'package:google_fonts\u002Fgoogle_fonts.dart';\n\nvoid main() => runApp(const MyApp());\n\nclass MyApp extends StatelessWidget {\n  const MyApp({super.key});\n\n  @override\n  Widget build(BuildContext context) {\n    return MaterialApp(\n      title: 'Demo Pacchetti',\n      debugShowCheckedModeBanner: false,\n      theme: ThemeData(\n        colorSchemeSeed: Colors.indigo,\n        useMaterial3: true,\n        \u002F\u002F Applica Poppins a tutti i testi dell'app\n        textTheme: GoogleFonts.poppinsTextTheme(),\n      ),\n      home: const HomePage(),\n    );\n  }\n}\n\nclass HomePage extends StatelessWidget {\n  const HomePage({super.key});\n\n  @override\n  Widget build(BuildContext context) {\n    return Scaffold(\n      appBar: AppBar(title: const Text('Il mio primo pacchetto')),\n      body: Padding(\n        padding: const EdgeInsets.all(24),\n        child: Column(\n          crossAxisAlignment: CrossAxisAlignment.start,\n          mainAxisAlignment: MainAxisAlignment.center,\n          children: [\n            Text(\n              'Ciao, pub.dev!',\n              style: Theme.of(context).textTheme.headlineMedium,\n            ),\n            const SizedBox(height: 12),\n            Text(\n              'Questo testo usa il font Poppins ereditato dal tema.',\n              style: Theme.of(context).textTheme.bodyLarge,\n            ),\n            const SizedBox(height: 24),\n            Text(\n              'Questo invece usa Lobster solo qui.',\n              style: GoogleFonts.lobster(fontSize: 26),\n            ),\n          ],\n        ),\n      ),\n    );\n  }\n}","Avviando l'app con `flutter run` vedi i testi renderizzati con i font Google al posto del font di sistema.",{"id":71,"position":72,"title":73,"body":74,"code_snippet":75,"code_language":76,"expected_result":77,"demo_url":41,"video_url":41},532,6,"Risolvere gli errori più comuni","Ecco i problemi tipici di chi installa un pacchetto per la prima volta e come uscirne.\n\n**1. `Target of URI doesn't exist: 'package:...'`**  \nIl pacchetto non è stato scaricato o il nome è sbagliato. Esegui `flutter pub get` e controlla lo spelling nel pubspec.\n\n**2. `Because ... depends on X >=2.0.0 version solving failed`**  \nConflitto di versioni tra pacchetti. Prova `flutter pub upgrade --major-versions`, oppure allenta il vincolo del pacchetto \"colpevole\" o aggiorna gli altri.\n\n**3. Il pacchetto usa codice nativo (plugin) e l'app crasha dopo l'hot reload**  \nI plugin con codice Android\u002FiOS richiedono un **restart completo** dell'app (stop e `flutter run`), non basta l'hot reload.\n\n**4. `MissingPluginException`**  \nStessa causa: ferma l'app e riavviala. Se persiste, esegui `flutter clean` seguito da `flutter pub get`.\n\n**5. Errori di indentazione YAML**  \n`Error on line 12, column 3: Expected a key` significa quasi sempre spazi sbagliati o un tab. Rientra ogni dipendenza di 2 spazi.\n\n**6. Rimuovere un pacchetto che non serve più**  \nUsa `flutter pub remove google_fonts`: mantenere dipendenze inutili appesantisce il progetto e la build.","flutter clean\nflutter pub get\nflutter pub outdated\nflutter pub remove google_fonts\nflutter run","bash","Sai diagnosticare e risolvere in autonomia gli errori più frequenti legati all'installazione dei pacchetti.",[],1789120599155]