how to get specific id data from firebase as a map?

Solution for how to get specific id data from firebase as a map?
is Given Below:

I am tried a lot of method for get sub collection data from[enter image description here] cloud firestore image of database

enter image description here

my future builder code

FutureBuilder<BasicInfoModela?>(
        future: FirstoreService()
            .getDoctorbasicsDetails(id: '123456'),
        builder: (context, snapshot) {
          switch (snapshot.connectionState) {
            case ConnectionState.waiting:
              return Center(child: CircularProgressIndicator());
            default:
              if (snapshot.hasError) {
                return buildText("$snapshot");
              } else if (snapshot.hasData) {
                final data = snapshot.data;
                print('called');
                print(data);
                final provider = Provider.of<WorKProvider>(context);
                provider.setData(data!);

                return body();
              } else {
                print('calledb');

                return CircularProgressIndicator();
              }
          }
        },
      )),

my model code

  factory BasicInfoModela.fromData(
Map<String, dynamic> data ) {
return BasicInfoModela(
  userId: data['userId'],
  firstName: data['firstname'],
  lastName: data['lastname'],
  email: data['email'],
  contactnumber: data['contactnumber'],
  dob: data['dod'],
  gender: data['gender'],
  city: data['city'],
  state: data['state'],
  country: data['coutry'],
  experience: data['experience'],
  speclization: data[''],
);

my future code for get data

  Future<BasicInfoModela?> getDoctorbasicsDetails({String? id}) async {
try {
  var dbdata = _usersCollectionReference.doc(id).snapshots();
  String joinString = jsonDecode(dbdata.toString());
  
  print(joinString);
  return BasicInfoModela.fromData(jsonDecode(joinString));
} catch (e) {
  if (e is PlatformException) {
  
  }
}

}

how can read the sub collection?
in this code i get always null
i know its simple thing but i my case its note working

_usersCollectionReference.doc(id).snapshots()

this will return a Stream<DocumentSnapshot>

Try this code

 Future<BasicInfoModela?> getDoctorbasicsDetails({String? id}) async {
  try {
    var dbdata = await _usersCollectionReference.doc(id).get();
    return BasicInfoModela.fromData(dbdata.data);
  } catch (e) {
    if (e is PlatformException) {}
  }
}