'Flutter error: Exception caught by gesture The following _CastError was thrown while handling a gesture:Null check operator used on a null value
I'm quite new with flutter, and I'm trying to write a messaging app. So, when I try to navigate from user search screen to chatting screen, I get this error. Full error:
Exception caught by gesture The following _CastError was thrown while handling a gesture: Null check operator used on a null value
and here's my source code:
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter/material.dart';
import '../screens/Chat_s.dart';
class MessageSearchScreen extends StatefulWidget {
@override
_MessageSearchScreenState createState() => _MessageSearchScreenState();
}
class _MessageSearchScreenState extends State<MessageSearchScreen> with WidgetsBindingObserver {
Map<String, dynamic>? userMap;
bool isLoading = false;
final TextEditingController _search = TextEditingController();
final FirebaseAuth _auth = FirebaseAuth.instance;
final FirebaseFirestore _firestore = FirebaseFirestore.instance;
@override
String chatRoomId(String user1, String user2) {
if (user1[0].toLowerCase().codeUnits[0] >
user2.toLowerCase().codeUnits[0]) {
return "$user1$user2";
} else {
return "$user2$user1";
}
}
void onSearch() async {
FirebaseFirestore _firestore = FirebaseFirestore.instance;
setState(() {
isLoading = true;
});
await _firestore
.collection('users')
.where("email", isEqualTo: _search.text)
.get()
.then((value) {
setState(() {
userMap = value.docs[0].data();
isLoading = false;
});
print(userMap);
});
}
@override
Widget build(BuildContext context) {
final size = MediaQuery.of(context).size;
return Scaffold(
appBar: AppBar(
title: Text("Home Screen"),
),
body: isLoading
? Center(
child: Container(
height: size.height / 20,
width: size.height / 20,
child: CircularProgressIndicator(),
),
)
: Column(
children: [
SizedBox(
height: size.height / 20,
),
Container(
height: size.height / 14,
width: size.width,
alignment: Alignment.center,
child: Container(
height: size.height / 14,
width: size.width / 1.15,
child: TextField(
controller: _search,
decoration: InputDecoration(
hintText: "Search",
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(10),
),
),
),
),
),
SizedBox(
height: size.height / 50,
),
ElevatedButton(
onPressed: onSearch,
child: Text("Search"),
),
SizedBox(
height: size.height / 30,
),
if (userMap != null) ListTile(
onTap: () {
String roomId = chatRoomId(
_auth.currentUser!.displayName!,
userMap!['firstName']);
Navigator.of(context).push(
MaterialPageRoute(
builder: (_) => ChatRoom(
chatRoomId: roomId,
userMap: userMap!,
),
),
);
},
leading: Icon(Icons.account_box, color: Colors.black),
title: Text(
userMap!['firstName'],
style: TextStyle(
color: Colors.black,
fontSize: 17,
fontWeight: FontWeight.w500,
),
),
subtitle: Text(userMap!['email']),
trailing: Icon(Icons.chat, color: Colors.black),
) else Container(),
],
),
);
}
}
Can someone help me with this?
Solution 1:[1]
i also face same issue then i clear flutter cache (use cammonds flutter clean and then flutter analyze ) and re-install app then work
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 | S_99_chandra |
