Ausgabe
Ich hoffe, jemand kann mir mit dem benutzerdefinierten Widget unten helfen. Als Tool verwende ich FlutterFlow to No-Code mit Flutter, aber es ist möglich, benutzerdefinierte Widgets zu erstellen, wie ich es unten versuche. Ich verwende eine Aktion als Parameter, aber ich habe keine Ahnung, wie ich das Problem lösen soll, das von FlutterFlow im Screenshot erwähnt wird. Kann jemand von euch Licht in diesen Fall bringen?
class SlideToCommit extends StatefulWidget {
const SlideToCommit({
Key? key,
this.width,
this.height,
this.label,
this.icon,
required this.action,
}) : super(key: key);
final double? width;
final double? height;
final Widget? label;
final Widget? icon;
final Future<dynamic> Function() action;
@override
_SlideToCommitState createState() => _SlideToCommitState();
}
class _SlideToCommitState extends State<SlideToCommit> {
@override
Widget build(BuildContext context) {
return SliderButton(
action: () async {
print("test");
},
///Put label over here
label: Text(
"Slide to commit",
style: TextStyle(
color: Color(0xff4a4a4a),
fontWeight: FontWeight.w500,
fontSize: 17),
),
icon: Center(
child: Icon(
Icons.power_settings_new,
color: Colors.white,
size: 40.0,
semanticLabel: 'Text to announce in accessibility modes',
)));
}
}```
Lösung
Sie haben action
als Future
Bedeutung definiert, dass eine asynchrone Methode vorhanden sein muss. Sie können dies tun, indem Sie das async-Schlüsselwort wie folgt hinzufügen:
action: () async {
},
Aber du hast noch ein anderes Problem. Sie geben einen anderen SliderButton
innerhalb des Aufbaus Ihres SliderButton
Zustands zurück, was bedeutet, dass Sie eine unendliche Rekursion erhalten
Beantwortet von – Ivo
Antwort geprüft von – Gilberto Lyons (FixError Admin)