# Installazione

<div id="install"></div>

Tre comandi ti portano da una cartella vuota a un'app Flutter funzionante, con routing, rete, temi e generazione del codice già configurati.

<div class="ny-doc-strip">
<span class="ny-doc-strip-label">Prima di iniziare</span>
<span class="ny-doc-strip-item">Flutter SDK installato</span>
<span class="ny-doc-strip-dot"></span>
<span class="ny-doc-strip-item">Dart 3</span>
<span class="ny-doc-strip-dot"></span>
<a href="/it/docs/7.x/requirements">Requisiti completi →</a>
</div>

## Installa

Esegui questi comandi nell'ordine indicato. Ognuno può essere eseguito di nuovo in sicurezza.

<div class="ny-doc-steps">
<div class="ny-doc-step">
<span class="ny-doc-step-num">1</span>
<h3 class="ny-doc-step-title">Installa la CLI Nylo globalmente</h3>

Installa il comando `nylo` sul tuo sistema.

``` bash
dart pub global activate nylo_installer
```

</div>

<div class="ny-doc-step">
<span class="ny-doc-step-num">2</span>
<h3 class="ny-doc-step-title">Crea un nuovo progetto</h3>

Questo comando clona il template Nylo, configura il progetto con il nome della tua app e installa automaticamente tutte le dipendenze.

``` bash
nylo new my_app
```

</div>

<div class="ny-doc-step">
<span class="ny-doc-step-num">3</span>
<h3 class="ny-doc-step-title">Configura l&#039;alias Metro</h3>

Questo configura il comando `metro` per il tuo progetto, permettendoti di usare i comandi Metro CLI senza la sintassi completa `dart run`.

``` bash
cd my_app
nylo init
```

Al termine, riavvia il terminale oppure esegui il comando `source` stampato da `nylo init`.

</div>
</div>

<div class="ny-doc-panel">
<div class="ny-doc-panel-head">
<img src="https://nylo.dev/images/nylo_logo.png" alt="" class="ny-mark h-[16px]">
<span>Cosa ottieni</span>
</div>
<div class="ny-doc-panel-body">
<div class="ny-doc-panel-grid">
<div class="ny-doc-panel-item">Routing e navigazione pre-configurati</div>
<div class="ny-doc-panel-item">Boilerplate del servizio API</div>
<div class="ny-doc-panel-item">Configurazione di tema e localizzazione</div>
<div class="ny-doc-panel-item">Metro CLI per la generazione del codice</div>
</div>
</div>
</div>


<div id="running-the-project"></div>

## Esecuzione del Progetto

I progetti Nylo si eseguono come qualsiasi app Flutter standard.

<div class="ny-doc-tabs" x-data="{ tab: 'Terminale' }">
<div class="ny-doc-tabbar" role="tablist">
<button type="button" role="tab" class="ny-doc-tab" @click="tab = 'Terminale'" :class="tab === 'Terminale' ? 'is-active' : ''" :aria-selected="tab === 'Terminale'">Terminale</button>
<button type="button" role="tab" class="ny-doc-tab" @click="tab = 'Android Studio'" :class="tab === 'Android Studio' ? 'is-active' : ''" :aria-selected="tab === 'Android Studio'">Android Studio</button>
<button type="button" role="tab" class="ny-doc-tab" @click="tab = 'VS Code'" :class="tab === 'VS Code' ? 'is-active' : ''" :aria-selected="tab === 'VS Code'">VS Code</button>
</div>

<div class="ny-doc-tabpanel" role="tabpanel" x-show="tab === 'Terminale'" x-cloak>

``` bash
flutter run
```

Se la build ha successo, l'app mostrera' la schermata di benvenuto predefinita di Nylo.

</div>

<div class="ny-doc-tabpanel" role="tabpanel" x-show="tab === 'Android Studio'" x-cloak>

Apri la cartella del progetto, scegli un dispositivo dal selettore di destinazione, quindi premi **Run**.

<a href="https://docs.flutter.dev/tools/android-studio#running-and-debugging" target="_BLANK">Documentazione Flutter: esecuzione e debug ↗</a>

</div>

<div class="ny-doc-tabpanel" role="tabpanel" x-show="tab === 'VS Code'" x-cloak>

Apri la cartella del progetto, quindi esegui **Debug: Start Without Debugging** dalla palette dei comandi.

<a href="https://docs.flutter.dev/tools/vs-code#run-app-without-breakpoints" target="_BLANK">Documentazione Flutter: esegui senza breakpoint ↗</a>

</div>

</div>


<div id="metro-cli"></div>

## Metro CLI

Metro genera i file del progetto per te. Avvialo senza argomenti per visualizzare il menu oppure richiama direttamente un comando.

``` plaintext
$ metro

Metro - Nylo's Companion to Build Flutter apps by Anthony Gordon

Usage:
    command [options] [arguments]

Options
    -h

All commands:

[Widget Commands]
  make:page
  make:stateful_widget
  make:stateless_widget
  make:state_managed_widget
  make:navigation_hub
  make:journey_widget
  make:bottom_sheet_modal
  make:button
  make:form

[Helper Commands]
  make:model
  make:provider
  make:api_service
  make:controller
  make:event
  make:route_guard
  make:config
  make:interceptor
  make:command
  make:env
```

### Riferimento comandi

Ogni comando accetta un nome, ad esempio `metro make:page settings_page`

<div class="ny-doc-commands">
<div class="ny-doc-commands-head">Comandi per widget</div>
<div class="ny-doc-command">
<code>metro make:page</code>
<span>Crea una nuova pagina</span>
</div>
<div class="ny-doc-command">
<code>metro make:stateful_widget</code>
<span>Crea un widget stateful</span>
</div>
<div class="ny-doc-command">
<code>metro make:stateless_widget</code>
<span>Crea un widget stateless</span>
</div>
<div class="ny-doc-command">
<code>metro make:state_managed_widget</code>
<span>Crea un widget con gestione dello stato</span>
</div>
<div class="ny-doc-command">
<code>metro make:navigation_hub</code>
<span>Crea un navigation hub (navigazione inferiore)</span>
</div>
<div class="ny-doc-command">
<code>metro make:journey_widget</code>
<span>Crea un widget journey per il navigation hub</span>
</div>
<div class="ny-doc-command">
<code>metro make:bottom_sheet_modal</code>
<span>Crea un modal bottom sheet</span>
</div>
<div class="ny-doc-command">
<code>metro make:button</code>
<span>Crea un widget pulsante personalizzato</span>
</div>
<div class="ny-doc-command">
<code>metro make:form</code>
<span>Crea un form con validazione</span>
</div>
</div>

<div class="ny-doc-commands">
<div class="ny-doc-commands-head">Comandi di supporto</div>
<div class="ny-doc-command">
<code>metro make:model</code>
<span>Crea una classe modello</span>
</div>
<div class="ny-doc-command">
<code>metro make:provider</code>
<span>Crea un provider</span>
</div>
<div class="ny-doc-command">
<code>metro make:api_service</code>
<span>Crea un servizio API</span>
</div>
<div class="ny-doc-command">
<code>metro make:controller</code>
<span>Crea un controller</span>
</div>
<div class="ny-doc-command">
<code>metro make:event</code>
<span>Crea un evento</span>
</div>
<div class="ny-doc-command">
<code>metro make:route_guard</code>
<span>Crea un route guard</span>
</div>
<div class="ny-doc-command">
<code>metro make:config</code>
<span>Crea un file di configurazione</span>
</div>
<div class="ny-doc-command">
<code>metro make:interceptor</code>
<span>Crea un interceptor di rete</span>
</div>
<div class="ny-doc-command">
<code>metro make:command</code>
<span>Crea un comando Metro personalizzato</span>
</div>
<div class="ny-doc-command">
<code>metro make:env</code>
<span>Genera la configurazione dell&#039;ambiente dal .env</span>
</div>
</div>

### Esempio di Utilizzo

``` bash
# Create a new page
metro make:page settings_page

# Create a model
metro make:model User

# Create an API service
metro make:api_service user_api_service
```


<div id="nylo-cli"></div>

## Nylo CLI

<!-- uncertain: no established it rendering yet for the x-doc-strip label "Requires" -->
<div class="ny-doc-strip">
<span class="ny-doc-strip-label">Richiede</span>
<span class="ny-doc-strip-item">nylo_installer 1.8.0+</span>
<span class="ny-doc-strip-dot"></span>
<a href="#nylo-self-update">Aggiorna la CLI →</a>
</div>

Il comando `nylo` del passaggio 1 fa molto più che creare progetti. Eseguilo dalla directory del tuo progetto per pulire le build, aggiornare i pod iOS, eseguire i test e controllare le tue traduzioni.

<div class="ny-doc-commands">
<div class="ny-doc-commands-head">Comandi del progetto</div>
<div class="ny-doc-command">
<code>nylo new</code>
<span>Crea un nuovo progetto</span>
</div>
<div class="ny-doc-command">
<code>nylo init</code>
<span>Configura l&#039;alias metro nella tua shell</span>
</div>
<div class="ny-doc-command">
<code>nylo clean</code>
<span>Esegui flutter clean e flutter pub get</span>
</div>
<div class="ny-doc-command">
<code>nylo ios:pod-refresh</code>
<span>Reinstalla i tuoi pod iOS</span>
</div>
<div class="ny-doc-command">
<code>nylo metro</code>
<span>Esegui un comando Metro senza l&#039;alias</span>
</div>
</div>

<div class="ny-doc-commands">
<div class="ny-doc-commands-head">Test e traduzioni</div>
<div class="ny-doc-command">
<code>nylo test</code>
<span>Formatta ed esegui i tuoi test</span>
</div>
<div class="ny-doc-command">
<code>nylo locale:find-untranslated</code>
<span>Trova il testo non racchiuso in .tr()</span>
</div>
<div class="ny-doc-command">
<code>nylo locale:check-missing-keys</code>
<span>Trova le chiavi mancanti nei tuoi file di lingua</span>
</div>
</div>

<div class="ny-doc-commands">
<div class="ny-doc-commands-head">La CLI stessa</div>
<div class="ny-doc-command">
<code>nylo self-update</code>
<span>Aggiorna nylo all&#039;ultima versione</span>
</div>
<div class="ny-doc-command">
<code>nylo --version</code>
<span>Mostra la versione installata</span>
</div>
</div>

I comandi che accettano opzioni le elencano con `-h`, ad esempio `nylo test -h`. Il testing è trattato in [Esecuzione dei Test](/docs/7.x/testing#running-tests), mentre i comandi `locale:` in [Audit delle Traduzioni](/docs/7.x/localization#auditing-translations).

<div id="nylo-clean"></div>

### Pulizia di un progetto

`nylo clean` esegue `flutter clean` e poi `flutter pub get`. Aggiungi un flag di piattaforma quando una pulizia normale non basta:

``` bash
# flutter clean, poi flutter pub get
nylo clean

# Rimuove anche ios/Pods, ios/.symlinks e ios/Podfile.lock, poi esegue pod install --repo-update
nylo clean --ios

# Esegue anche gradlew clean in android/
nylo clean --android

# Entrambe le opzioni sopra
nylo clean --all
```

Se un progetto non ha una cartella `ios/` o `android/`, quella piattaforma viene saltata con un avviso. `pod install` viene eseguito solo su macOS.

<div id="nylo-ios-pod-refresh"></div>

### Aggiornamento dei pod iOS

Quando CocoaPods si desincronizza, `nylo ios:pod-refresh` elimina `ios/Pods`, `ios/.symlinks` e `ios/Podfile.lock`, poi esegue `pod install --repo-update` nella cartella `ios/`:

``` bash
nylo ios:pod-refresh
```

Eseguilo dalla radice del tuo progetto su macOS. A differenza di `nylo clean --ios`, non esegue `flutter clean` né `flutter pub get`.

<div id="nylo-metro"></div>

### Esecuzione di Metro senza l'alias

`nylo metro` passa tutto ciò che segue a Metro (`dart run nylo_framework:main`). Usalo prima di aver eseguito `nylo init`, oppure su Windows, dove `nylo init` non può aggiungere l'alias `metro` per te:

``` bash
nylo metro make:page settings_page
nylo metro make:model User
```

<div id="nylo-self-update"></div>

### Aggiornamento della CLI

``` bash
nylo self-update
```

Questo controlla pub.dev e reinstalla `nylo_installer` se è disponibile una versione più recente. Al termine di un comando, `nylo` ti avvisa anche quando è uscito un aggiornamento. Resta silenzioso quando l'output non è diretto a un terminale, così l'avviso non finisce mai nei log CI o negli output reindirizzati.

Per vedere quale versione hai installato:

``` bash
nylo --version
```
