Aktueller User in Custom Code

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!

Quelle

1 Stern2 Sterne3 Sterne4 Sterne5 Sterne (1)

Loading…
Avatar von manuel

AUTOR

manuel