在较旧的 flutter sdk 版本上,下面的示例可以正常工作,但现在出现错误 The argument type 'Object?' 无法分配给参数类型“List”
FutureBuilder(
future: fetchEmp(),
builder: (context, snapshot) {
return snapshot.hasData
? RecommandEmp(emps: snapshot.data) ---Here is problem!!!
: Center(child: Image.asset('assets/images/no.png'));
},
),
class RecommandEmp extends StatefulWidget {
const RecommandEmp({Key? key, required this.emps}) : super(key: key);
final List<Emp> emps;
@override
_RecommandEmpState createState() => _RecommandEmpState();
}
Run Code Online (Sandbox Code Playgroud)
获取Emp
Future<List<Emp>> fetchEmp() async {
final response = await http.get(Uri.https(myUrl, 'select/emp'));
if (response.statusCode == 200) {
List<Emp> emp = (json.decode(utf8.decode(response.bodyBytes))["items"] as List)
.map((data) => Emp.fromJson(data))
.toList();
return emp;
} …Run Code Online (Sandbox Code Playgroud) 下面的示例在我的列表视图中加载数据,但某些字符无效,例如。\xc3\x85 \xc3\x84 我正在尝试使用 utf8
\n\nvar jsonData = json.decode(response.body);\n\nvar jsonData = utf8.decode(response.bodyBytes);\nRun Code Online (Sandbox Code Playgroud)\n\n当我使用 utf8 时,结果是正确的,但在 listTile 中加载数据时出现引号并出现错误
\n\n//I/flutter ( 4629): {"items":[{"name":"xy\xc5\xa1\xc4\x87", //character is OK but get quotation mark\n//I/flutter ( 4629): {items: [{name: xy\xc3\x84\xc3\x84, //wrong character\n\n\n\nclass Api {\n static Future<dynamic> _get(String url) async {\n try {\n final response = await http.get(url);\n var jsonData = json.decode(response.body);\nRun Code Online (Sandbox Code Playgroud)\n\n有什么解决办法吗?
\n是否可以更改tileColor,例如。if _userDetails[index].salary < 1000 Colors.red else Color.blue 或者可能从查询返回颜色并设置tileColor: _userDetails[index].color,
title: Text(_userDetails[index].name),
subtitle: Text(_userDetails[index].salary.toString()),
tileColor: Colors.red,
Run Code Online (Sandbox Code Playgroud)