Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Breaking Changes & Deprecations #10

Open
gaetanosestito opened this issue Aug 24, 2020 · 12 comments
Open

Breaking Changes & Deprecations #10

gaetanosestito opened this issue Aug 24, 2020 · 12 comments

Comments

@gaetanosestito
Copy link

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.

@mohitnakum
Copy link

mohitnakum commented Aug 28, 2020

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/

@dryusha
Copy link

dryusha commented Oct 3, 2020

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());
}
}
}


@digitpk
Copy link

digitpk commented Oct 27, 2020

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(
stream: _firestore.collection('messages').snapshots(),
builder: (context, snapshot) {
if (snapshot.hasData) {
final messages = snapshot.data.docs;
List messageWidgets = [];
for (var message in messages) {

// 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);
              }
            }
          },
        ),

@digitpk
Copy link

digitpk commented Oct 27, 2020

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'];

@FredWolfe
Copy link

@digitpk

this is how I fixed the buildstream error

StreamBuilder(
stream: _fireStore.collection('messages').snapshots(),
builder: (context, snapshot) {
if (snapshot.hasData) {}
final messages = snapshot.data.docs;
List messageWidgets = [];
for (var message in messages) {
final messageText = message.data()['text'];
final messageSender = message.data()['sender'];

              final messageWidget =
                  Text('$messageText from $messageSender');
              messageWidgets.add(messageWidget);
            }
            return Column(
              children: messageWidgets,
            );
          },
        ),

@steph9600
Copy link

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

@LoneWolfPJT
Copy link

final messageText = message['text'];
final messageSender = message['sender'];

you can fix it

@steph9600
Copy link

worked like a charm. thanks!

@dyardy
Copy link

dyardy commented Dec 15, 2021

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}');
    }),

@Yougraj
Copy link

Yougraj commented Feb 18, 2022

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

@ravi238873
Copy link

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.

@FredWolfe
Copy link

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

10 participants