Open gaetanosestito opened 4 years ago
also change before:FirebaseUser loggedInUser; after:User loggedInUser; because FierbaseUser Deprecated and currentUser now synchronize so not needed async. Accessing the current user via currentUser() is now synchronous via the currentUser getter. https://firebase.flutter.dev/docs/migration/
Yeah.. I change my main() function into main.dart file like dat
.... void main() async { WidgetsFlutterBinding.ensureInitialized(); await Firebase.initializeApp(); runApp(FlashChat()); } ....
and second changes its import firebase auth and deprecated FirebaseUser change to auth.User example for chat screen.
import 'package:firebase_auth/firebase_auth.dart' as auth; ... auth.User loggedInUser;
@override void initState() { super.initState();
getCurrentUser();
}
void getCurrentUser() { try { final user = _auth.currentUser; if (user != null) { loggedInUser = user; print(loggedInUser.email); } } catch (e) { print(e); } } ...
Lesson N18-19. Also Firestore is deprecated need to used FirebaseFirestore, final _fireStore = FirebaseFirestore.instance; if u are using streams, snapshot.documents is deprecated too and need to call snapshot.docs with responses data func.
void getMessages() async { await for (var snapshot in _fireStore.collection('messages').snapshots()) { for (var message in snapshot.docs) { print(message.data()); } } }
Also, guide the latest code regarding stream builder (L#21. Turning Streams into Widgets Using the StreamBuilder) as I didn't get the expected results.
mine code is:
StreamBuilder
// i get the error here on the parenthesis final messageText = message.data(); final messageSender = message.data();
final messageWidget =
Text('$messageText from $messageSender');
messageWidgets.add(messageWidget);
}
}
},
),
I got this error fix by using adding this:
// i get the error fix here by adding fields after the parenthesis final messageText = message.data()['field 1']; final messageSender = message.data()['field 2'];
@digitpk
this is how I fixed the buildstream error
StreamBuilder
final messageWidget =
Text('$messageText from $messageSender');
messageWidgets.add(messageWidget);
}
return Column(
children: messageWidgets,
);
},
),
final messageText = message.data()['text']; final messageSender = message.data()['sender'];
isn't working for me. i get an error: The operator '[]' isn't defined for the type 'Object'. (undefined_operator at [flash_chat] lib\screens\chat_screen.dart:114)
Wondering if anybody has encountered this/has a fix
final messageText = message['text']; final messageSender = message['sender'];
you can fix it
worked like a charm. thanks!
This was final StreamBuilder returned from _firestore.collection('messages').snapshots(); Hope this helps someone.
StreamBuilder(
stream: _firestore.collection('messages').snapshots(),
builder: (BuildContext context,
AsyncSnapshot<QuerySnapshot> snapshot) {
if (snapshot.hasData) {
final messages = snapshot.data?.docs;
List<Text> messageWidgets = [];
for (var message in messages!) {
final messageText = message['text'];
final messageSender = message['sender'];
final messageWidget =
Text('$messageText from $messageSender');
messageWidgets.add(messageWidget);
}
return Column(
children: messageWidgets,
);
}
return Text('no data');
// return Text('${snapshot.data}');
}),
This was final StreamBuilder returned from _firestore.collection('messages').snapshots(); Hope this helps someone.
StreamBuilder( stream: _firestore.collection('messages').snapshots(), builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) { if (snapshot.hasData) { final messages = snapshot.data?.docs; List<Text> messageWidgets = []; for (var message in messages!) { final messageText = message['text']; final messageSender = message['sender']; final messageWidget = Text('$messageText from $messageSender'); messageWidgets.add(messageWidget); } return Column( children: messageWidgets, ); } return Text('no data'); // return Text('${snapshot.data}'); }),
thank you
This was final StreamBuilder returned from _firestore.collection('messages').snapshots(); Hope this helps someone.
StreamBuilder( stream: _firestore.collection('messages').snapshots(), builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) { if (snapshot.hasData) { final messages = snapshot.data?.docs; List<Text> messageWidgets = []; for (var message in messages!) { final messageText = message['text']; final messageSender = message['sender']; final messageWidget = Text('$messageText from $messageSender'); messageWidgets.add(messageWidget); } return Column( children: messageWidgets, ); } return Text('no data'); // return Text('${snapshot.data}'); }),
This works and consider this as final solution.
This was final StreamBuilder returned from _firestore.collection('messages').snapshots(); Hope this helps someone.
StreamBuilder( stream: _firestore.collection('messages').snapshots(), builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) { if (snapshot.hasData) { final messages = snapshot.data?.docs; List<Text> messageWidgets = []; for (var message in messages!) { final messageText = message['text']; final messageSender = message['sender']; final messageWidget = Text('$messageText from $messageSender'); messageWidgets.add(messageWidget); } return Column( children: messageWidgets, ); } return Text('no data'); // return Text('${snapshot.data}'); }),
thanks so much
Hey all, Firebase's API for flutter has changed the way developers integrate Flutter applications with Firebase. So exist a migration guide to help with updating existing and new projects for Flash chat. Please check it out: Migration Guide
About me, I had to do a call to
Firebase.initializeApp();
in order to run successuful.