[FIXED] Flattern, Abrufen von Wert von showTimePicker funktioniert nicht

Ausgabe

Ich versuche, die aus dem showTimePicker-Dialog ausgewählte Zeit anzuzeigen, aber nachdem ich den Wert erhalten habe, wird er wieder null. Nach dem Debuggen scheint es, als ob der Wert, der von der zukünftigen Funktion zurückgegeben wird, abgelaufen ist oder so. nach der Widgets-onPress-Funktion ist es wieder auf null.

ElevatedButton(
                  child: const Text('Time'),
                  onPressed: () async {
                    vTimeSelected = await getTimeSelected(context);
                    setState(() {
                      // vStrToRndr = vTimeSelected.toString();
                      //print(vStrToRndr);
                    });
                  },
                ),
                ElevatedButton(
                  child: const Text('Solid'),
                  onPressed: () {
                    setState(() {
                      vDetail.solid = !vDetail.solid;
                    });
                  },
                ),
              ],
            ),
          ),
          if (vDetail.wet == true) Text('Nappy wet'),
          if (vDetail.solid == true) Text('Nappy Solid'),
          Text('Time: $vTimeSelected'),
[7:35 PM]
Future<TimeOfDay?> getTimeSelected(BuildContext context) async {
  TimeOfDay vTime = TimeOfDay(hour: 0, minute: 0);
  TimeOfDay? newTime =
      await showTimePicker(context: context, initialTime: vTime);

  return newTime;
  //print($newTime);
}

//thanks for any help

Text('Time: $vTimeSelected') //<---- this is displaying null

Lösung

Sie können dieser Codestruktur folgen. Stellen Sie sicher, dass Sie die Variable außerhalb der Build-Methode deklarieren.

class TS extends StatefulWidget {
  const TS({super.key});

  @override
  State<TS> createState() => _TSState();
}

class _TSState extends State<TS> {
  TimeOfDay? vTimeSelected;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      floatingActionButton: FloatingActionButton(onPressed: () async {
        vTimeSelected = await getTimeSelected(context);
        setState(() {});
      }),
      body: Text("${vTimeSelected}"),
    );
  }
}


Beantwortet von –
Yeasin Sheikh


Antwort geprüft von –
Robin (FixError Admin)

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like