Beim Schreiben von Custom Actions in FlutterFlow benötigt man öfter die Referenz zum aktuellen, eingeloggten User in der standardmäßig angelegten Collection Users
. Dazu gibt es einige Möglichkeiten – und die schnellste findet ihr am Ende dieses Artikels.
Die „no-code“-Lösung (quasi 😁)
Die oft verwendete Variante ist, dass die Custom Action einen Parameter vom Typ DocumentReference > Users erhält:

Der Vorteil ist wenig Programmierarbeit; die Nachteile sind einerseits, dass von nun an bei jedem Aufruf der Parameter mit angegeben werden muss; und andererseits, dass der Parameter im Programmcode am Handy/Gerät ausgeführt wird. Wenn wir direkt den angemeldeten User abfragen, ist das natürlich „schöner“.
Die „längere“ Variante
Dies ist eine Lösung, auf die ich selbst gekommen bin. Sie funktioniert einwandfrei, ist aber ein bisschen länger. Der Code:
// Get the current user
final FirebaseAuth auth = FirebaseAuth.instance;
final User? user = auth.currentUser;
// Get a reference to the Firestore db
final firestore = FirebaseFirestore.instance;
// Check if there is a auth. user (there always should be)
if (user != null) {
// Get reference to the user's document
final collUsers = firestore.collection('Users');
DocumentReference userDocRef = collUsers.doc(user.uid);
...
Die „beste“ Variante
Vom User Jirgal im FlutterFlow-Community-Forum kam die beste Lösung. Einfach folgenden Import durchführen:
import '/auth/firebase_auth/auth_util.dart' as auth_util;
Dann hat man in der Variable auth_util.currentUserReference
die Referenz zum aktueller User, also z. B.
if (auth_util.currentUserReference != null) {
QuerySnapshot snapshot = await FirebaseFirestore.instance
.collection('Dokumente')
.where('uid_user', isEqualTo: auth_util.currentUserReference)
.get();
...
Also: Danke an Jirgal für die tolle Lösung!