Flutter: Základní widgety

Z MiS
(Rozdíly mezi verzemi)
Přejít na: navigace, hledání
(Tlačítka: Rozepsány podrobněji vlastnosti.)
(Textová pole: Přidáno enable/readOnly/labelText)
Řádka 24: Řádka 24:
 
  TextField(
 
  TextField(
 
   controller: _abcController,
 
   controller: _abcController,
  readOnly: true, // Pokud chcete pole pouze pro čtení
 
 
   decoration: const InputDecoration(
 
   decoration: const InputDecoration(
 
     labelText: 'Nadpis pole – viditelný popisek:',
 
     labelText: 'Nadpis pole – viditelný popisek:',
Řádka 30: Řádka 29:
 
   keyboardType: TextInputType.number, // Pokud chceme omezit vstup na číselné hodnoty
 
   keyboardType: TextInputType.number, // Pokud chceme omezit vstup na číselné hodnoty
 
  ),
 
  ),
 +
 +
; Parametry widgetu
 +
 +
enabled: 
 +
* Aktivní/zakázané textové pole.
 +
* Zakázané textové pole je šedivé a nejde do něj umístit kurzor.
 +
 +
readOnly: 
 +
* Textové pole pouze pro čtení – ale není šedivé a lze do něj umístit kurzor
 +
 +
onChanged: (text) { ... }
 +
* Metoda, která se zavolá při změně obsahu tlačítka.
 +
* Metoda musí přijímat jako parametr text.
 +
  
 
; Kontroler textového pole
 
; Kontroler textového pole
Řádka 43: Řádka 56:
  
 
; Nastavení vzhledu <code>InputDecoration</code>
 
; Nastavení vzhledu <code>InputDecoration</code>
 +
 
  contentPadding: EdgeInsets.all(20.0),
 
  contentPadding: EdgeInsets.all(20.0),
 
* Odsazení obsahu
 
* Odsazení obsahu
 +
 
  border: OutlineInputBorder(),
 
  border: OutlineInputBorder(),
 
* Ohraničení textového pole
 
* Ohraničení textového pole
 +
 +
labelText: 'text'
 +
* Popiska textového pole.
 +
* Když je pole prázdné, text je v poli.
 +
* Jakmile uživatel pole vyplní, popiska se přesune do rámečku textového pole.
 +
 
  hintText: 'Text'
 
  hintText: 'Text'
 
* Nápověda – co má uživatel zadat do pole.
 
* Nápověda – co má uživatel zadat do pole.

Verze z 26. 1. 2026, 17:35


Obsah

Uspořádání stránky

Center( child: ... )
Column(
  mainAxisAlignment: MainAxisAlignment.center,
  children: <Widget>[ ... ]
)
Padding(
  padding: EdgeInsetsGeometry.all(20),
  child: ...
)
Expanded( child: ... )

Textová pole

TextField(
  controller: _abcController,
  decoration: const InputDecoration(
    labelText: 'Nadpis pole – viditelný popisek:',
  ),
  keyboardType: TextInputType.number, // Pokud chceme omezit vstup na číselné hodnoty
),
Parametry widgetu
enabled:  
readOnly:  
onChanged: (text) { ... }


Kontroler textového pole
final TextEditingController _abcController = TextEditingController();
final double totalPrice = double.parse(parsedValue = _abcController.text.trim());
_abcController.dispose()
Nastavení vzhledu InputDecoration
contentPadding: EdgeInsets.all(20.0),
border: OutlineInputBorder(),
labelText: 'text'
hintText: 'Text'

Tlačítka

 ElevatedButton(
   onPressed: _nazevMetodyReakce,
   child: const Text('Popis tlačítka'),
 ),
Vlastnosti
onPressed:   
child:  

ListView

Odsazení

SizedBox(height: 10),

Příklad použití:

Column(
  const Text('Hello'),
  const Sizedbox(height: 10),
  const Text('World!'),
)

Textová popiska

const Text('Záznamy o tankování:',),


Vyskakovací bublina (Toast)

 setState(() {
   ScaffoldMessenger.of(context).showSnackBar(
     SnackBar(
         content: Text('Informace pro uživatele')
     ),
   );
 });


Jednoduchý dialog

Pro zobrazení dialogu si můžeme vytvořit metodu:

 Future<void> displayDialog(String messageText) => showDialog<void>(
   context: context,
   builder: (context) {
     return AlertDialog(
       title: const Text('Chybně zadaná data:'),
       content: Text(messageText),
       actions: <Widget>[
         TextButton(
           onPressed: () {
             Navigator.of(context).pop();
           },
           child: const Text('OK'),
         ),
       ],
     );
   },
 );

Metodu následně voláme:

displayDialog('Text');
Osobní nástroje
Jmenné prostory
Varianty
Akce
Výuka
Navigace
Nástroje