Forms 我想做一个复选框。必须向文本小部件提供非空字符串
我想做一个复选框。这是我在运行代码时遇到的错误:Forms 我想做一个复选框。必须向文本小部件提供非空字符串,forms,flutter,dart,checkbox,submit,Forms,Flutter,Dart,Checkbox,Submit,我想做一个复选框。这是我在运行代码时遇到的错误: A non-null String must be provided to a Text widget. 'package:flutter/src/widgets/text.dart': Failed assertion: line 285 pos 10: 'data != null' 这是我的密码: import 'package:flutter/material.dart'; import 'dart:async'; import 'dar
A non-null String must be provided to a Text widget.
'package:flutter/src/widgets/text.dart':
Failed assertion: line 285 pos 10: 'data != null'
这是我的密码:
import 'package:flutter/material.dart';
import 'dart:async';
import 'dart:convert';
import 'datagejala.dart';
class Diagnosis2 extends StatefulWidget {
@override
_Diagnosis2State createState() => _Diagnosis2State();
}
class _Diagnosis2State extends State<Diagnosis2> {
//initState
bool selected = false;
var userStatus = List<bool>();
Future<List<DataGejala>> getContactsFromJSON(BuildContext context) async{
String jsonString = await DefaultAssetBundle.of(context).loadString("assets/data/penyakit.json");
List<dynamic> raw = jsonDecode(jsonString);
return raw.map((f) => DataGejala.fromJSON(f)).toList();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Select City'),
),
body: Container(
child: FutureBuilder(
future: getContactsFromJSON(context),
builder: (BuildContext context, AsyncSnapshot snapshot) {
print(snapshot.data);
if (snapshot.data == null) {
return Container(child: Center(child: Text("Loading...")));
} else {
return ListView.builder(
itemCount: snapshot.data.length,
itemBuilder: (BuildContext context, int index) {
return ListTile(
title: Text(snapshot.data[index].g_nama),
trailing: Checkbox(
value: userStatus[index],
onChanged: (bool val) {
setState(() {
userStatus[index] = !userStatus[index];
});
}),
);
},
);
}
},
),
),
);
}
}
导入“包装:颤振/材料.省道”;
导入“dart:async”;
导入“dart:convert”;
导入“datagejala.dart”;
类诊断2扩展了StatefulWidget{
@凌驾
_DiagnosticsState createState()=>U DiagnosticsState();
}
类_Diagnosis2State扩展状态{
//初始状态
bool selected=false;
var userStatus=List();
未来的getContactsFromJSON(构建上下文)异步{
String jsonString=await DefaultAssetBundle.of(context.loadString(“assets/data/penyakit.json”);
List raw=jsonDecode(jsonString);
返回raw.map((f)=>DataGejala.fromJSON(f)).toList();
}
@凌驾
小部件构建(构建上下文){
返回脚手架(
appBar:appBar(
标题:文本(“选择城市”),
),
主体:容器(
孩子:未来建设者(
未来:getContactsFromJSON(上下文),
生成器:(BuildContext上下文,异步快照){
打印(快照数据);
如果(snapshot.data==null){
返回容器(子:中心(子:文本(“加载…”));
}否则{
返回ListView.builder(
itemCount:snapshot.data.length,
itemBuilder:(构建上下文,int索引){
返回列表块(
标题:文本(快照.data[index].g_nama),
尾随:复选框(
值:userStatus[索引],
一旦更改:(布尔瓦尔){
设置状态(){
userStatus[index]=!userStatus[index];
});
}),
);
},
);
}
},
),
),
);
}
}
错误消息表示您尝试用于文本小部件的值为null,因此您的错误与复选框无关,而是您需要重新检查为什么“snapshot.data[index].g_nama”返回null而不是您希望的字符串