'streamChatState != null':您必须在小部件树的顶部有一个 StreamChat 小部件



我是新的扑动和我试图运行与getstream聊天api和firebase聊天应用程序。每次尝试登录或注册时,我都会遇到错误

截图这是main.dart这是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;
});
}
}

这是我的home_page.dart

我试着在网上寻找答案,但没有工作。

看起来你的小部件树中没有StreamChat小部件;为了正确使用Stream Chat Flutter SDK,您需要在小部件树的根附近安装这个小部件。

查看stream_chat_flutter包中的示例,了解如何执行此操作。

最新更新