Flutter -- Tutorial Teil 8 TextField Part 2 InputDecoration 1
Textfelder |
Was ist eine Callback Funktion ?
Die Informatik nennt Funktionen, die einer anderen Funktion als Parameter übergeben werden, callback function – Rückruffunktion. callback-Funktionen werden nach der Ausführung einer anderen Funktion ausgeführt – daher der Name callback
InputDecoration
Flutter gibt uns einige Möglichkeiten das Text Feld zu gestalten. Eine der oft genutzten ist der hintText. Er weißt den Benutzer daraufhin, was für eine Eingabe von ihm erwartet wird.
1 2 3 4 | TextField(
decoration: InputDecoration(
hintText: "Passwort:",
)
|
Das erreichen wir, indem wir unser TextField um den Eintrag decoration: erweitern. An dieser Stelle können wir InputDecoration verwenden, was uns einige Möglichkeiten eröffnet.
1 2 3 4 5 6 7 8 9 10 11 | Container( width: 200.0, child: TextField( decoration: InputDecoration( hintText: "Username:", icon: Icon( Icons.person, ), ), ), ), |
Mit dem Code oben implementieren wir zum Beispiel, das unser Textfeld mit einem Icon beginnt. Wir können dabei auf die in Flutter "mitgelieferten" Icons zurück greifen.
Für diejenigen die den Code nachvollziehen möchten hier die main.dart Datei:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | import 'package:flutter/material.dart'; import 'package:flutter/rendering.dart'; import 'package:tutflutter_002/meine_widgets.dart'; void main() { debugPaintSizeEnabled=false; runApp(MeinDemo()); } class MeinDemo extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( title: "Mein Demo", theme:ThemeData( primaryColor: Colors.black, ), home: MeineHomePage1(), ); } } |
Das einzige, was es zum Code oben zu sagen gibt, ist der Import von rendering.dart. Der bool Wert debugPaintSizeEnabled, wenn auf true gesetzt, unterstützt uns beim debuggen. Das rendering.dart File enthält noch weitere Möglichkeiten dieser Art, aber das ist ein Thema für sich.
Hier noch das Widget MeineHomePage1():
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | class MeineHomePage1 extends StatefulWidget { @override _MeineHomePage1State createState() => _MeineHomePage1State(); } class _MeineHomePage1State extends State<MeineHomePage1> { String textfeldInhalt =''; @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( centerTitle: true, title: Text( "Mein kleines Demo", ), ), body: Row( mainAxisAlignment: MainAxisAlignment.center, children: <Widget>[ Column( mainAxisAlignment: MainAxisAlignment.center, children: <Widget>[ Container( width: 200.0, child: TextField( decoration: InputDecoration( hintText: "Username:", icon: Icon( Icons.person, ), ), ), ), Container( width: 200.0, child: TextField( decoration: InputDecoration( hintText: "Passwort:", icon: Icon( Icons.security, ), ), ), ), ], ), ], ), ); } } |
Hier sollte man hinzufügen, das wir natürlich nicht auf die Flutter Icons beschränkt sind. Wir können auch "eigene" Icons in Flutter implementieren...
Nehmen wir mal an, jetzt sind wir gaaanz verrückt, und wir möchten den Hinweistext für Username in weißer Schrift auf blauem Hintergrund und das Passwort in weißer Schrift mit Hintergrundfarbe orange. Dazu müssen wir den Code oben wie folgt abändern:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | Container( width: 200.0, child: TextField( decoration: InputDecoration( hintText: "Username:", icon: Icon( Icons.person, ), hintStyle: TextStyle( backgroundColor: Colors.blue, color: Colors.white, ), ), ), ), Container( width: 200.0, child: TextField( decoration: InputDecoration( hintText: "Passwort:", icon: Icon( Icons.security, ), hintStyle: TextStyle( backgroundColor: Colors.orange, color: Colors.white, ), ), ), ), |
Der Code oben hat das folgende Ergebnis:
Das Bild oben zeigt die zwei Textfelder, wobei das Feld Passwort den Fokus hat, aber noch keine Eingabe erfolgt ist.
Das war es für diesen Post. Bis bald !
Kommentare
Kommentar veröffentlichen