类型 'List<dynamic>' 不是类型 'Iterable<Connection>' 的子类型 - 颤振



当我尝试从API by Models获取数据时,我在调试控制台中发现了这个错误。。

**I/flutter (31507): type 'List<dynamic>' is not a subtype of type 'Iterable<Connection>'

**

如何从该模型中获取数据?如果没有模型,我就无法在StreamBuilder中显示API数据,如果没有模型我很容易在应用程序中显示数据。

API演示:

[
{
"id": 1,
"confrm_date": "2022-01-17T07:14:06",
"User_name": "গণপরিবহনে অঘোষিত নিয়ম",
"Phone_Number": "01854555",
"Description": "পরিবহন খাতের সঙ্গে মো. রুবেল হোসেন যুক্ত সেই ১৯৯৭ সাল থেকে। শুরু থেকেই তিনি ‘পুলিশ পাস’-এর কথা শুনে আসছেন। আদৌ এ নিয়ে কোনো আইন বা নিয়ম আছে কি না, তা জানেন না তিনি। তাঁর মতো অনেক পরিবহনমালিক ও শ্রমিকের একই অবস্থা।rnrnএত দিন শিক্ষার্থীদের জন্য বাসে অর্ধেক ভাড়ার (হাফ পাস) কথা শোনা গেলেও গণপরিবহনে ভাড়াসংক্রান্ত আরেকটি বিষয় প্রচলিত আছে। সেটিই হলো ওই ‘পুলিশ পাস’। এ ক্ষেত্রে অর্ধেক ভাড়া নয়, কোনো ভাড়াই দিচ্ছেন না অনেক পুলিশ সদস্য।",
"Connection_status": false,
"cat_img": "http://103.137.75.74:82/media/cat_img/LOGO-01.png",
"Connection_by": 1
},
{
"id": 2,
"confrm_date": "2022-01-17T07:14:06",
"User_name": "অবৈধ রসিদে টোল",
"Phone_Number": "01854555",
"Description": "অবৈধ রসিদ তৈরি করে রাজধানীর যাত্রাবাড়ীর মেয়র হানিফ উড়ালসড়ক থেকে টোল আদায় করার অভিযোগ উঠেছে সংঘবদ্ধ একটি চক্রের বিরুদ্ধে। বিভিন্ন যানবাহনের চালকদের ভয় দেখিয়ে টোলের নামে চাঁদা আদায় করছিল চক্রটি। না দিলে প্রাণনাশের হুমকি দিচ্ছিল তারা।",
"Connection_status": false,
"cat_img": "http://103.137.75.74:82/media/cat_img/LOGO-01.png",
"Connection_by": 1
},
{
"id": 3,
"confrm_date": "2022-01-17T10:42:36",
"User_name": "User",
"Phone_Number": "01854555",
"Description": "নরমাল ডেলিভারি হসপিটাল",
"Connection_status": false,
"cat_img": "http://103.137.75.74:82/media/cat_img/LOGO-01.png",
"Connection_by": 1
},
{
"id": 4,
"confrm_date": "2022-01-17T10:42:46",
"User_name": "User",
"Phone_Number": "01854555",
"Description": "কাশেম মঞ্জিল, তানযীমুল উম্মাহ হিফয মাদ্রাসা।",
"Connection_status": false,
"cat_img": "http://103.137.75.74:82/media/cat_img/LOGO-01.png",
"Connection_by": 1
},
{
"id": 5,
"confrm_date": "2022-01-17T10:42:57",
"User_name": "User",
"Phone_Number": "78339399",
"Description": "হাউজিং মারকাজ মসজিদের পিছনে - nstu teacher 2300 tk router +rnline charge 1000+ 360",
"Connection_status": false,
"cat_img": "http://103.137.75.74:82/media/cat_img/LOGO-01.png",
"Connection_by": 1
},
{
"id": 6,
"confrm_date": "2022-01-17T10:43:04",
"User_name": "User",
"Phone_Number": "01854555",
"Description": "মাষ্টার পাড়া - হালিমা ভিলা ৩ তলায়",
"Connection_status": false,
"cat_img": "http://103.137.75.74:82/media/cat_img/LOGO-01.png",
"Connection_by": 1
},
{
"id": 7,
"confrm_date": "2022-01-17T10:44:25",
"User_name": "User",
"Phone_Number": "0185455545",
"Description": "মিঠুর কানেকশন আছে এখন , ১ তারিখ নিবে।",
"Connection_status": false,
"cat_img": "http://103.137.75.74:82/media/cat_img/LOGO-01.png",
"Connection_by": 1
},
{
"id": 8,
"confrm_date": "2022-01-17T10:44:49",
"User_name": "User",
"Phone_Number": "01855545",
"Description": "এতিম খানার পিছনে।",
"Connection_status": false,
"cat_img": "http://103.137.75.74:82/media/cat_img/LOGO-01.png",
"Connection_by": 1
}
]

我的型号是:

class Connection {
int? id;
String? confrmDate;
String? userName;
String? phoneNumber;
String? description;
bool? connectionStatus;
String? catImg;
int? connectionBy;
Connection(
{this.id,
this.confrmDate,
this.userName,
this.phoneNumber,
this.description,
this.connectionStatus,
this.catImg,
this.connectionBy});
Connection.fromJson(Map<String, dynamic> json) {
id = json['id'];
confrmDate = json['confrm_date'];
userName = json['User_name'];
phoneNumber = json['Phone_Number'];
description = json['Description'];
connectionStatus = json['Connection_status'];
catImg = json['cat_img'];
connectionBy = json['Connection_by'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['id'] = this.id;
data['confrm_date'] = this.confrmDate;
data['User_name'] = this.userName;
data['Phone_Number'] = this.phoneNumber;
data['Description'] = this.description;
data['Connection_status'] = this.connectionStatus;
data['cat_img'] = this.catImg;
data['Connection_by'] = this.connectionBy;
return data;
}
}

**ListViewBuilder:**

class NewCollectionTab extends StatefulWidget with BaseController {
@override
State<NewCollectionTab> createState() => _NewCollectionTabState();
}
class _NewCollectionTabState extends State<NewCollectionTab>
with BaseController {
final keyRefresh = GlobalKey<RefreshIndicatorState>();
@override
Widget build(BuildContext context) {
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
SizedBox(height: 20),
Padding(
padding: EdgeInsets.symmetric(horizontal: 20),
child: KText(
text: 'Main',
fontSize: 18,
fontWeight: FontWeight.w600,
color: Colors.black,
),
),
SizedBox(height: 10),
ListView.builder(
shrinkWrap: true,
primary: false,
physics: BouncingScrollPhysics(),
itemCount: connectionDataC.connection.length,
itemBuilder: (context, index) {
final item = connectionDataC.connection[index];
return InkWell( child: Padding(
padding: EdgeInsets.only(bottom: 10),
child: ListTile(
leading: CircleAvatar(
radius: 30,
backgroundColor: black12,
backgroundImage: NetworkImage(
item!.catImg.toString(),
),
), ),
),
);
},
),
],
);
}
}

我的控制器是:

class ConnectionController extends GetxController {
final _dio = Dio();
final   connection = RxList<Connection>();
//
getconnectionList() async {
print('++++++++++++++++++++++++++++++++++');
try {
final sharedPreferences = await SharedPreferences.getInstance();
final token = sharedPreferences.get('accessToken');
final userName = sharedPreferences.get('loginUserName');
final res = await _dio.get(
'$baseUrl/new_connection/?search=$userName',
options: Options(
headers: {
"Content-Type": "application/json",
"Accept": "application/json",
"Authorization": 'Token $token'
},
),
);
print(res.statusCode);
print(res.headers);
// print(res.body);
// print(res.unauthorized);
print(res.realUri);
print(res.statusMessage);
// print(res.data);
print(res.realUri);
print(res.requestOptions);
print('++++++++++++++++++++++++++++++++++');
if (res.statusCode == 200) {
connection.addAll(res.data);
}
} catch (e) {
print(e);
}
}
}

我需要帮助,请问我如何通过模型获取数据来帮助我。

试试这个。

if (res.statusCode! >= 200 && res.statusCode! < 300) {
connection.addAll((res.data as List).map((e) => Connection.fromJson(e)).toList());
}

不要忘记将res.data分配到列表中。希望它能起作用!!!

试试这个。

if (res.statusCode == 200) {
connection.addAll(res.data.map(connection) => Connection.fromJson(connection).toList());
}

CCD_ 1在变换给定列表中的每个元素之后产生新的列表。

相关内容

最新更新