''streamChatState != null': You must have a StreamChat widget at the top of your widget tree
I am new to flutter and im trying to run a chat app with getstream chat api and firebase. I keep running into an error every time i try to sign in or sign up
this is main.dart this is my sign_in_screen.dart
class SignInScreen extends StatefulWidget {
static Route get route => MaterialPageRoute(
builder: (context) => const SignInScreen(),
);
const SignInScreen({Key? key}) : super(key: key);
@override
State<SignInScreen> createState() => _SignInScreenState();
}
class _SignInScreenState extends State<SignInScreen> {
final auth = firebase.FirebaseAuth.instance;
final functions = FirebaseFunctions.instance;
final _formKey = GlobalKey<FormState>();
final _emailController = TextEditingController();
final _passwordController = TextEditingController();
final _emailRegex = RegExp(
r"^[a-zA-Z0-9.a-zA-Z0-9.!#$%&'*+-/=?^_`{|}~]+@[a-zA-Z0-9]+\.[a-zA-Z]+");
bool _loading = false;
Future<void> _signIn() async {
if (_formKey.currentState!.validate()) {
setState(() {
_loading = true;
});
try {
// Authenticate with Firebase
final creds =
await firebase.FirebaseAuth.instance.signInWithEmailAndPassword(
email: _emailController.text,
password: _passwordController.text,
);
final user = creds.user;
if (user == null) {
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(content: Text('User is empty')),
);
return;
}
// Get Stream user token from Firebase Functions
final callable = functions.httpsCallable('getStreamUserToken');
final results = await callable();
// Connnect stream user
final client = StreamChatCore.of(context).client;
await client.connectUser(
User(id: creds.user!.uid),
results.data,
);
// Navigate to home screen
await Navigator.of(context).pushReplacementNamed(Routes.HOME);
} on firebase.FirebaseAuthException catch (e) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text(e.message ?? 'Auth error')),
);
} catch (e, st) {
logger.e('Sign in error, ', e, st);
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(content: Text('An error occured')),
);
}
setState(() {
_loading = false;
});
}
}
I tried looking online for answers but none worked.
Solution 1:[1]
It looks like you don't have a StreamChat
widget in your widget tree; in order to use the Stream Chat Flutter SDK properly, you'll need this widget near the root of your widget tree.
Check out this example from the stream_chat_flutter
package for how to do this.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | GroovinChip |