Bearbeiten von „Flutter-Widgets“

Zur Navigation springen Zur Suche springen

Warnung: Du bist nicht angemeldet. Deine IP-Adresse wird bei Bearbeitungen öffentlich sichtbar. Melde dich an oder erstelle ein Benutzerkonto, damit Bearbeitungen deinem Benutzernamen zugeordnet werden.

Die Bearbeitung kann rückgängig gemacht werden. Bitte prüfe den Vergleich unten, um sicherzustellen, dass du dies tun möchtest, und veröffentliche dann unten deine Änderungen, um die Bearbeitung rückgängig zu machen.

Aktuelle Version Dein Text
Zeile 8: Zeile 8:
<pre>
<pre>
List<Widget> = [
List<Widget> = [
   Col(  
   Col( children = [
     crossAxisAlignment: CrossAxisAlignment.start,
     Row( children: [
    children = [
      Expanded(
       Row( children: [
        child: const Text('Be surprised!'),
         Expanded(
      ),
           child: const Text('Be surprised!'),
      const SizedBox(width: 16),
      ElevatedButton(
        child: Text('Click it'),
        onPressed: () => sayHello(),
      ),
       ]),
    const SizedBox(height: 16),
    Row( children: [
      const Expanded (flex: 7,
         child: Text('You need help?'),
      ),
      const SizedBox(height: padding),
      const Expanded (flex: 2,
        child: ElevatedButton(
           child: Text('Help me'),
          onPressed: () => help(),
         ),
         ),
        const SizedBox(width: 16),
        ElevatedButton(
          child: Text('Click it'),
          onPressed: () => sayHello(),
        ),
        ]),
      const SizedBox(height: 16),
      Row( children: [
        const Expanded (flex: 7,
          child: Text('You need help?'),
       ),
       ),
        const SizedBox(height: padding),
        const Expanded (flex: 2,
          child: ElevatedButton(
            child: Text('Help me'),
            onPressed: () => help(),
          ),
        ),
       ]),
       ]),
    ]),
  ]),
];
];
</pre>
</pre>
Zeile 55: Zeile 53:
</pre>
</pre>


= Abwandlungen =
= Formular =
== Visibility ==
Damit kann die Sichtbarkeit eines Elements gesteuert werden. Ganz wichtig für GetX-Layouts!
 
Im folgenden Beispiel wird entweder das eine oder das andere Element angezeigt.
<pre>
final widgets = <Widget>[
  Visibility(
    visible: controller.isEmpty.value,
    child: buildEmptyImage()
  ),
  Visibility(
    visible: !controller.isEmpty.value,
    child: buildImage()
  ),
];
</pre>
 
== Tooltip ==
Dieses Element erzeugt einen Erklärungstext, der erscheint, wenn die Maus kurz auf dem Kindelement verweilt.
<pre>
final widget = Tooltip(
  message: 'Löschen',
  child: Icon(Icons.delete_forever_outlined)
);
</pre>
 
== Inkwell (Reaktionsfläche) ==
Mit diesem Element ist es möglich, eine Aktion zu definieren, wenn das Kindelement berührt/angeklickt wird.
<pre>
final Widget = Material(
  color: Colors.green,
  child: InkWell(
    onTap: () async { Get.toNamed(Routes.routeAction); }
    child: SizedBox(width: 200, height: 200, child: image.value,),
    ),
);
</pre>
 
= Formular (Text und Dropdown) =
Jedes Formular benötigt einen '''Key''', der normalerweise im Controller erzeugt/gespeichert wird:
Jedes Formular benötigt einen '''Key''', der normalerweise im Controller erzeugt/gespeichert wird:


Zeile 108: Zeile 67:


<pre>
<pre>
final items = [
  DropdownMenuItem<bool>(value: false, child: Text('inaktive)),
  DropdownMenuItem<bool>(value: true, child: Text('active))
];
final form = Form(
final form = Form(
   key: controller.formKey,
   key: controller.formKey,
Zeile 117: Zeile 72:
     children: [
     children: [
       TextFormField(
       TextFormField(
        decoration: InputDecoration(labelText: 'Age'),
         validator: checkInt,
         validator: checkInt,
         onSaved: (input) => controller.age.value = input,
         onSaved: (input) => controller.controllerData = input,
         controller: controller.controllerAge,
         controller: ,
      ),
      DropdownButtonFormField<bool>(
        value: fieldData.locationId,
        items: items,
        isExpanded: true,
        decoration: const InputDecoration(labelText: 'Status'),
        onSaved: (value) => controller.status.value = value,
       ),
       ),
   ]),
   ]),
Zeile 134: Zeile 81:


void store(controller, String input){
void store(controller, String input){
  if (controller, formKey.currentState?.validate() ?? false) {
    if (controller, formKey.currentState?.validate() ?? false) {
    controller.formKey.currentState?.save();
      controller.formKey.currentState?.save();
  }
    }
}
}
</pre>
= DropDownButton (Combobox) =
<pre>
final items1 = [
  DropdownMenuItem(child: Image.asset('img/undefined.png'), value: ''),
  DropdownMenuItem(child: Text('Active'), value: 'A'),
  DropdownMenuItem(child: Text('Inactive'), value: 'I'),
];
final button1 = DropdownButton<String>(
  value: '',
  items: items1,
  onChanged: (value) {
    controller.active = value
  },
);
final item2 = List<int>generate(5, (i) => i+1).map((no) => DropdownMenuItem(child: Text('Element $no'), value: no));
final button2 = DropdownButton<int>(
  value: 0,
  items: items2,
  onChanged: (value) {
    controller.no = value
  },
);
</pre>
== DropDownField ==
<pre>
import 'package:dropdown_textfield/dropdown_textfield.dart';
...
final widget =  DropDownTextField(
  // initialValue: "name4",
  controller: controller.nameController,
  clearOption: false,
  enableSearch: true,
  searchDecoration: const InputDecoration(hintText: "Type part of the name"),
  validator: (value) value != null ? null : "Required field",
  dropDownItemCount: 6,
  dropDownList: const [
    DropDownValueModel(name: 'name1', value: "value1"),
    DropDownValueModel(name: 'name2', value: "value2", toolTipMsg: "Select an item from the list"),
DropDownValueModel(name: 'name3', value: "value3"),
DropDownValueModel(name: 'name4', value: "value4", toolTipMsg: "This is value4",
  ],
  onChanged: (val) { controller.selectedName = val; },
);
</pre>
</pre>


Bitte kopiere keine Webseiten, die nicht deine eigenen sind, benutze keine urheberrechtlich geschützten Werke ohne Erlaubnis des Urhebers!
Du gibst uns hiermit deine Zusage, dass du den Text selbst verfasst hast, dass der Text Allgemeingut (public domain) ist, oder dass der Urheber seine Zustimmung gegeben hat. Falls dieser Text bereits woanders veröffentlicht wurde, weise bitte auf der Diskussionsseite darauf hin. Bitte beachte, dass alle Info-Theke-Beiträge automatisch unter der „Gemeinfreiheit“ stehen (siehe Info-Theke:Urheberrechte für Einzelheiten). Falls du nicht möchtest, dass deine Arbeit hier von anderen verändert und verbreitet wird, dann klicke nicht auf „Seite speichern“.

Abbrechen Bearbeitungshilfe (wird in einem neuen Fenster geöffnet)