тип "String" не является подтипом типа "Movie" пожалуйста, кто-нибудь, помогите мне решить эту проблему, спасибо
Я получаю сообщение об ошибке при попытке запуска в флаттере (тип «String» не является подтипом типа «int» из «index»)
import 'dart:math';
import 'package:firebase_database/firebase_database.dart';
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter/material.dart';
import 'package:http/http.dart';
import 'package:realstate/home%20page/addingpage.dart';
import 'package:realstate/home%20page/inkwall.dart';
import 'package:sqflite/sqflite.dart';
import '../account page/account page.dart';
import '../my stats.dart';
import '../notifcatoin.dart';
class Home extends StatefulWidget {
const Home({Key? key}) : super(key: key);
@override
State<Home> createState() => _HomeState();
}
class _HomeState extends State<Home> {
CollectionReference Detabase =
FirebaseFirestore.instance.collection('Detabase');
final Stream<QuerySnapshot> _usersStream =
FirebaseFirestore.instance.collection('Detabase').snapshots();
Stream<QuerySnapshot> getData() {
return Detabase.snapshots();
}
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
home: Scaffold(
backgroundColor: Colors.white,
appBar: AppBar(
centerTitle: true,
title: const Text(
"Home",
style: TextStyle(
color: Colors.black,
fontFamily: 'Montserrat',
fontWeight: FontWeight.bold,
fontSize: 32),
),
leading: IconButton(
icon: Icon(
Icons.add_business_sharp,
color: Colors.black,
size: 26,
),
onPressed: () {
Navigator.of(context)
.push(MaterialPageRoute(builder: (context) => Addingpage()));
},
),
backgroundColor: Colors.white,
actions: [
IconButton(
onPressed: () {
Navigator.of(context).push(
MaterialPageRoute(builder: (context) => AccountPage()));
},
icon: const Icon(
Icons.account_circle,
),
color: Colors.black,
highlightColor: Colors.transparent,
focusColor: Colors.transparent,
hoverColor: Colors.transparent,
splashColor: Colors.transparent,
)
],
),
body: Container(
padding: EdgeInsets.all(30),
child: StreamBuilder<QuerySnapshot>(
stream: _usersStream,
builder:
(BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {
if (snapshot.hasError) {
return Text('Something went wrong');
}
if (snapshot.connectionState == ConnectionState.waiting) {
return Text("Loading");
}
return ListView(
children: snapshot.data!.docs.map(
(DocumentSnapshot document) {
Map<String, dynamic>? data =
document.data() as Map<String, dynamic>;
return MovieItem(data[Index] ?? "");
},
).toList(),
);
},
),
),
),
);
}
}
ПОЖАЛУЙСТА, кто-нибудь решит эту проблему, это заняло у меня 2 недели
Я получаю сообщение об ошибке при попытке запуска в флаттере (тип «String» не является подтипом типа «int» из «index»)
вы указали 2 разные ошибки
так что да, и код выглядит по-другому на фрагменте
Хорошо так в
return MovieItem(data[Index] ?? "");
вы возвращаете данные [индекс], но если он равен нулю, вы возвращаете ""
так MovieItem("")
тебе следует это сделать
return MovieItem(data[Index] ?? null);
привет вот чего я достиг
А что вы получаете snapshot.data
от Firebase? Вы можете показать эти данные?
я не могу понять, что ты имеешь в виду
попробуйте добавить где перед картой и ! вместо ??""
так :
return ListView(
children: snapshot.data!.docs.where((e)=>e!=null).map(
(DocumentSnapshot document) {
Map<String, dynamic>? data =
document.data() as Map<String, dynamic>;
return MovieItem(data[Index]!);
},
).toList(),
потому что некоторые элементы документов имеют значение null, и вы не можете заменить его строкой
похоже, ваша проблема связана с файлом Movie.dart, вам нужно поделиться им и предоставить некоторый контекст того, чего вы пытаетесь достичь, чтобы люди могли помочь.