【发布时间】:2019-01-29 09:08:11
【问题描述】:
fifth.dart
import 'package:flutter/material.dart';
import 'package:emas_app/Dependant.dart' as Dep;
import 'package:emas_app/crm_dependent_list_model.dart';
import 'dart:convert';
import 'dart:async';
import 'package:http/http.dart' as http;
import 'package:emas_app/crm_dep_entitlement_model.dart';
final String url = "http://crm.emastpa.com.my/MemberInfo.json";
//Future to get list of dependent names
Future<List<DependantModel>> fetchUserInfo() async{
http.Response response = await http.get(url);
var responsejson = json.decode(response.body);
return(responsejson[0]['Dependents'] as List)
.map((user) => DependantModel.fromJson(user))
.toList();
}
class Fifth extends StatefulWidget {
@override
_FifthState createState() => _FifthState();
}
class _FifthState extends State<Fifth> {
static Future<List<DependantModel>> depState;
@override
void initState() {
depState = fetchUserInfo();
super.initState();
}
@override
Widget build(BuildContext context) {
//ListView.builder inside FutureBuilder
var futureBuilder = new FutureBuilder<List<DependantModel>>(
future: depState,
builder: (context, snapshot){
switch(snapshot.connectionState){
case ConnectionState.none:
case ConnectionState.waiting:
return new Center(
child: new CircularProgressIndicator(),
);
default:
if(snapshot.hasError){
return new Text(snapshot.error);
}else{
List<DependantModel> user = snapshot.data;
return new ListView.builder(
itemCount: user.length,
itemBuilder: (context, index){
return new Column(
children: <Widget>[
new ListTile(
title: new Text(user[index].name,
style: TextStyle(fontSize: 20.0)),
subtitle: new Text(user[index].relationship,
style: TextStyle(fontSize: 15.0)),
trailing: new MaterialButton(color: Colors.greenAccent,
textColor: Colors.white,
child: new Text("More"),
onPressed: (){
Navigator.push(context,
new MaterialPageRoute(builder: (context) => Dep.Dependents(name: user[index].name)));
}
),
)
],
);
});
}
}
});
return new Scaffold(
body: futureBuilder,
);
}
}
我刚刚在我的颤振项目中出现以下错误。 I/flutter (12737):══╡小部件库发现异常╞═════════════════════════════════════════════ ═════════════════════════ I/flutter (12737):在构建 FutureBuilder>(dirty, state: 时抛出了以下断言 我/颤振(12737):_FutureBuilderState>#b09b6): I/flutter (12737):“NoSuchMethodError”类型不是“String”类型的子类型 I/flutter (12737):要么断言表明框架本身有错误,要么我们应该提供大量 I/flutter (12737):此错误消息中的更多信息可帮助您确定和修复根本原因。 I/flutter (12737):无论哪种情况,请通过在 GitHub 上提交错误来报告此断言:
什么是脏状态?
【问题讨论】:
-
我猜问题出在这里。返回新文本(snapshot.error);尝试评论该行并检查。它说,“NoSuchMethodError”不是“String”类型的子类型,所以我猜问题就在那里
-
@JaswantSingh 我已经评论了这条线,但它仍然无法正常工作。 snapshot.hasError 将返回一个提及错误的文本 (snapshot.error)。所以这部分会捕获错误,不会有助于修复提到的错误。