# Installation

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

Trzy polecenia wystarczą, aby przejść od pustego folderu do działającej aplikacji Flutter z gotowym routingiem, siecią, motywami i generowaniem kodu.

<div class="ny-doc-strip">
<span class="ny-doc-strip-label">Zanim zaczniesz</span>
<span class="ny-doc-strip-item">Zainstalowany Flutter SDK</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="/pl/docs/7.x/requirements">Pełne wymagania →</a>
</div>

## Instalacja

Uruchom te polecenia po kolei. Każde z nich można bezpiecznie uruchomić ponownie.

<div class="ny-doc-steps">
<div class="ny-doc-step">
<span class="ny-doc-step-num">1</span>
<h3 class="ny-doc-step-title">Zainstaluj Nylo CLI globalnie</h3>

Instaluje polecenie `nylo` w Twoim systemie.

``` 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">Utwórz nowy projekt</h3>

To polecenie klonuje szablon Nylo, konfiguruje projekt z nazwą Twojej aplikacji i automatycznie instaluje wszystkie zależności.

``` 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">Skonfiguruj alias Metro</h3>

To konfiguruje polecenie `metro` dla Twojego projektu, pozwalając na używanie poleceń Metro CLI bez pełnej składni `dart run`.

``` bash
cd my_app
nylo init
```

Uruchom ponownie terminal, albo wykonaj polecenie `source`, które wypisuje `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>Co otrzymujesz</span>
</div>
<div class="ny-doc-panel-body">
<div class="ny-doc-panel-grid">
<div class="ny-doc-panel-item">Wstępnie skonfigurowany routing i nawigacja</div>
<div class="ny-doc-panel-item">Gotowy szkielet serwisu API</div>
<div class="ny-doc-panel-item">Konfiguracja motywów i lokalizacji</div>
<div class="ny-doc-panel-item">Metro CLI do generowania kodu</div>
</div>
</div>
</div>


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

## Uruchamianie projektu

Projekty Nylo działają jak każda standardowa aplikacja Flutter.

<div class="ny-doc-tabs" x-data="{ tab: 'Terminal' }">
<div class="ny-doc-tabbar" role="tablist">
<button type="button" role="tab" class="ny-doc-tab" @click="tab = 'Terminal'" :class="tab === 'Terminal' ? 'is-active' : ''" :aria-selected="tab === 'Terminal'">Terminal</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 === 'Terminal'" x-cloak>

``` bash
flutter run
```

Jeśli budowanie zakończy się sukcesem, aplikacja wyświetli domyślny ekran powitalny Nylo.

</div>

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

Otwórz folder projektu, wybierz urządzenie z selektora celu, a następnie naciśnij **Run**.

<a href="https://docs.flutter.dev/tools/android-studio#running-and-debugging" target="_BLANK">Dokumentacja Flutter: uruchamianie i debugowanie ↗</a>

</div>

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

Otwórz folder projektu, a następnie uruchom **Debug: Start Without Debugging** z palety poleceń.

<a href="https://docs.flutter.dev/tools/vs-code#run-app-without-breakpoints" target="_BLANK">Dokumentacja Flutter: uruchom bez punktów przerwania ↗</a>

</div>

</div>


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

## Metro CLI

Metro generuje pliki projektu. Uruchom je bez argumentów, aby wyświetlić menu, lub wywołaj polecenie bezpośrednio.

``` 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
```

### Referencja poleceń

Każde polecenie przyjmuje nazwę, np. `metro make:page settings_page`

<div class="ny-doc-commands">
<div class="ny-doc-commands-head">Polecenia widgetów</div>
<div class="ny-doc-command">
<code>metro make:page</code>
<span>Utwórz nową stronę</span>
</div>
<div class="ny-doc-command">
<code>metro make:stateful_widget</code>
<span>Utwórz widget stanowy</span>
</div>
<div class="ny-doc-command">
<code>metro make:stateless_widget</code>
<span>Utwórz widget bezstanowy</span>
</div>
<div class="ny-doc-command">
<code>metro make:state_managed_widget</code>
<span>Utwórz widget z zarządzaniem stanem</span>
</div>
<div class="ny-doc-command">
<code>metro make:navigation_hub</code>
<span>Utwórz hub nawigacji (dolna nawigacja)</span>
</div>
<div class="ny-doc-command">
<code>metro make:journey_widget</code>
<span>Utwórz widget podróży dla huba nawigacji</span>
</div>
<div class="ny-doc-command">
<code>metro make:bottom_sheet_modal</code>
<span>Utwórz modal dolnego arkusza</span>
</div>
<div class="ny-doc-command">
<code>metro make:button</code>
<span>Utwórz niestandardowy widget przycisku</span>
</div>
<div class="ny-doc-command">
<code>metro make:form</code>
<span>Utwórz formularz z walidacją</span>
</div>
</div>

<div class="ny-doc-commands">
<div class="ny-doc-commands-head">Polecenia pomocnicze</div>
<div class="ny-doc-command">
<code>metro make:model</code>
<span>Utwórz klasę modelu</span>
</div>
<div class="ny-doc-command">
<code>metro make:provider</code>
<span>Utwórz providera</span>
</div>
<div class="ny-doc-command">
<code>metro make:api_service</code>
<span>Utwórz serwis API</span>
</div>
<div class="ny-doc-command">
<code>metro make:controller</code>
<span>Utwórz kontroler</span>
</div>
<div class="ny-doc-command">
<code>metro make:event</code>
<span>Utwórz zdarzenie</span>
</div>
<div class="ny-doc-command">
<code>metro make:route_guard</code>
<span>Utwórz strażnika trasy</span>
</div>
<div class="ny-doc-command">
<code>metro make:config</code>
<span>Utwórz plik konfiguracyjny</span>
</div>
<div class="ny-doc-command">
<code>metro make:interceptor</code>
<span>Utwórz interceptor sieciowy</span>
</div>
<div class="ny-doc-command">
<code>metro make:command</code>
<span>Utwórz niestandardowe polecenie Metro</span>
</div>
<div class="ny-doc-command">
<code>metro make:env</code>
<span>Wygeneruj konfigurację środowiska z .env</span>
</div>
</div>

### Przykłady użycia

``` 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: strip label "Requires" — no established Polish translation seen in existing locale files -->
<div class="ny-doc-strip">
<span class="ny-doc-strip-label">Wymagania</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">Zaktualizuj CLI →</a>
</div>

Polecenie `nylo` z kroku 1 robi więcej niż tylko tworzenie projektów. Uruchom je z katalogu projektu, aby czyścić buildy, odświeżać pody iOS, uruchamiać testy i sprawdzać swoje tłumaczenia.

<div class="ny-doc-commands">
<div class="ny-doc-commands-head">Polecenia projektu</div>
<div class="ny-doc-command">
<code>nylo new</code>
<span>Utwórz nowy projekt</span>
</div>
<div class="ny-doc-command">
<code>nylo init</code>
<span>Skonfiguruj alias metro w swojej powłoce</span>
</div>
<div class="ny-doc-command">
<code>nylo clean</code>
<span>Uruchom flutter clean i flutter pub get</span>
</div>
<div class="ny-doc-command">
<code>nylo ios:pod-refresh</code>
<span>Zainstaluj ponownie swoje pody iOS</span>
</div>
<div class="ny-doc-command">
<code>nylo metro</code>
<span>Uruchom polecenie Metro bez aliasu</span>
</div>
</div>

<div class="ny-doc-commands">
<div class="ny-doc-commands-head">Testowanie i tłumaczenia</div>
<div class="ny-doc-command">
<code>nylo test</code>
<span>Sformatuj i uruchom swoje testy</span>
</div>
<div class="ny-doc-command">
<code>nylo locale:find-untranslated</code>
<span>Znajdź tekst, który nie jest opakowany w .tr()</span>
</div>
<div class="ny-doc-command">
<code>nylo locale:check-missing-keys</code>
<span>Znajdź klucze brakujące w plikach językowych</span>
</div>
</div>

<div class="ny-doc-commands">
<div class="ny-doc-commands-head">Samo CLI</div>
<div class="ny-doc-command">
<code>nylo self-update</code>
<span>Zaktualizuj nylo do najnowszej wersji</span>
</div>
<div class="ny-doc-command">
<code>nylo --version</code>
<span>Pokaż zainstalowaną wersję</span>
</div>
</div>

Polecenia, które przyjmują opcje, wyświetlają je za pomocą `-h`, na przykład `nylo test -h`. Testowanie jest omówione w [Uruchamianie testów](/docs/7.x/testing#running-tests), a polecenia `locale:` w [Audytowanie tłumaczeń](/docs/7.x/localization#auditing-translations).

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

### Czyszczenie projektu

`nylo clean` uruchamia `flutter clean`, a następnie `flutter pub get`. Dodaj flagę platformy, gdy zwykłe czyszczenie nie wystarcza:

``` bash
# flutter clean, a następnie flutter pub get
nylo clean

# Usuwa też ios/Pods, ios/.symlinks i ios/Podfile.lock, a następnie uruchamia pod install --repo-update
nylo clean --ios

# Uruchamia też gradlew clean w android/
nylo clean --android

# Oba powyższe
nylo clean --all
```

Jeśli projekt nie ma folderu `ios/` lub `android/`, ta platforma jest pomijana z ostrzeżeniem. `pod install` działa tylko na macOS.

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

### Odświeżanie podów iOS

Gdy CocoaPods traci synchronizację, `nylo ios:pod-refresh` usuwa `ios/Pods`, `ios/.symlinks` i `ios/Podfile.lock`, a następnie uruchamia `pod install --repo-update` w folderze `ios/`:

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

Uruchom je z katalogu głównego projektu na macOS. W przeciwieństwie do `nylo clean --ios`, nie uruchamia ono `flutter clean` ani `flutter pub get`.

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

### Uruchamianie Metro bez aliasu

`nylo metro` przekazuje wszystko, co po nim następuje, do Metro (`dart run nylo_framework:main`). Użyj tego, zanim uruchomisz `nylo init`, albo w systemie Windows, gdzie `nylo init` nie może dodać za Ciebie aliasu `metro`:

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

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

### Aktualizowanie CLI

``` bash
nylo self-update
```

To sprawdza pub.dev i instaluje ponownie `nylo_installer`, jeśli dostępna jest nowsza wersja. Po zakończeniu polecenia `nylo` informuje Cię również, gdy dostępna jest aktualizacja.

<!-- uncertain: "piped reports" (shell pipe redirection of CLI output) has no established Polish equivalent in this corpus -->
Pozostaje ono ciche, gdy wyjście nie trafia do terminala, więc powiadomienie nigdy nie pojawia się w logach CI ani w raportach przekazywanych potokowo.

Aby sprawdzić, którą wersję masz zainstalowaną:

``` bash
nylo --version
```
