Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Forms 我想做一个复选框。必须向文本小部件提供非空字符串_Forms_Flutter_Dart_Checkbox_Submit - Fatal编程技术网

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而不是您希望的字符串