Reputation: 97
iam trying to add data from my data base (MYSQL DATABASE) as Json and i got this error can any one help me because I looked for a solution to the problem, and I could not find it
import 'package:flutter/material.dart';
import 'package:youtubeclone/pages/class/categores.dart';
import 'package:youtubeclone/pages/componets/appbarallproject.dart';
import 'package:youtubeclone/pages/componets/mydrawer.dart';
import 'dart:io';
import 'package:image_picker/image_picker.dart';
import '../class/dropdownmenuclass.dart';
import 'package:http/http.dart' as http;
import 'dart:convert';
class Upload extends StatefulWidget {
@override
_UploadState createState() => _UploadState();
}
class _UploadState extends State<Upload> {
GlobalKey<ScaffoldState> _drawerKey = GlobalKey();
CategoresList _selectedCategory2;
List<CategoresList> listcategory = <CategoresList>[];
Future<List<CategoresList>> getCategories() async {
var url = "http://10.0.2.2/videoTube/chosecategories.php";
var response = await http.get(url);
var responsebody = jsonDecode(response.body);
for (int i = 0; i < responsebody.length; i++) {
listcategory.add(responsebody[i]['name']);
}
}
@override
void initState() {
getCategories();
super.initState();
}
@override
Widget build(BuildContext context) {
return Scaffold(
key: _drawerKey,
drawer: MyDrawer(),
appBar: AppBarAllProject(drawerKey: _drawerKey),
body: Container(
child: Center(
child: AnimatedContainer(
duration: Duration(milliseconds: 600),
curve: Curves.easeOutBack,
width: MediaQuery.of(context).size.width - 40,
height: 1000,
child: Card(
elevation: 5.0,
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
DropdownButton<CategoresList>(
hint: Text("Select Categore"),
value: _selectedCategory2,
onChanged: (CategoresList catey) {
setState(() {
_selectedCategory2 = catey;
});
},
items: listcategory?.map((CategoresList categoreslist) {
return DropdownMenuItem<CategoresList>(
value: categoreslist,
child: Row(
children: <Widget>[
Text(
categoreslist.name,
),
],
),
);
})?.toList() ??
[],
),
],
),
),
),
),
),
);
}
}
this is the function that i got erro on it i got the error Specifically on the line listcategory.add(responsebody[i]['name'])
Future<List<CategoresList>> getCategories() async {
var url = "http://10.0.2.2/videoTube/chosecategories.php";
var response = await http.get(url);
var responsebody = jsonDecode(response.body);
for (int i = 0; i < responsebody.length; i++) {
listcategory.add(responsebody[i]['name']);
}
}
this class CategoresList
import 'package:flutter/material.dart';
class CategoresList {
final name;
CategoresList({this.name});
}
Upvotes: 0
Views: 38
Reputation: 32
The error message is self explanatory. You are trying to add a string to a list which holds CategoresList types.
Create a new CategoresList from responsebody[i]['name'] before you add it to listcategory.add();
var name = responsebody[i]['name'];
var category = CategoresList(name: name);
listcategory.add(category);
Upvotes: 1