属性“长度”无法无条件访问,因为接收器可以为null
import 'package:flutter/material.dart';
import 'package:notes/db/database_provider.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return MaterialApp(
initialRoute: "/",
routes: {
"/":(context)=>HomeScreen()
},
);
}
}
class HomeScreen extends StatefulWidget {
const HomeScreen({Key? key}) : super(key: key);
@override
State<HomeScreen> createState() => _HomeScreenState();
}
class _HomeScreenState extends State<HomeScreen> {
getNotes()async{
final notes = await DatabaseProvider.db.getNotes();
return notes;
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("Notes"),
),
body: FutureBuilder(
future: getNotes(),
builder: (context,noteData){
switch(noteData.connectionState){
case ConnectionState.waiting:
{
return Center(child: CircularProgressIndicator(),);
}
case ConnectionState.done:
{
if(noteData.data !=null){
return Padding(
padding: const EdgeInsets.all(8.0),
child: ListView.builder(
itemCount:noteData.data!.length,
itemBuilder: (context,index){
String title=noteData.data[index]['title'];
},
),
);
}
else {
return Center(
child: Text("You don't have any notes yet,create one?"),
);
}
}
}
},
),
);
}
}
因此,我正在使用SQF Lite从YouTube上的DocorCode获取指导,我编写了相同的代码,但它显示了与Null检查有关的一些错误,但我无法绕过它们,无论如何,我都无法绕过它们。
无论我添加什么添加空检查或它总是显示出错误的任何内容,无论如何都可以关闭零检查,请告诉我如何解决问题。
import 'package:flutter/material.dart';
import 'package:notes/db/database_provider.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return MaterialApp(
initialRoute: "/",
routes: {
"/":(context)=>HomeScreen()
},
);
}
}
class HomeScreen extends StatefulWidget {
const HomeScreen({Key? key}) : super(key: key);
@override
State<HomeScreen> createState() => _HomeScreenState();
}
class _HomeScreenState extends State<HomeScreen> {
getNotes()async{
final notes = await DatabaseProvider.db.getNotes();
return notes;
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("Notes"),
),
body: FutureBuilder(
future: getNotes(),
builder: (context,noteData){
switch(noteData.connectionState){
case ConnectionState.waiting:
{
return Center(child: CircularProgressIndicator(),);
}
case ConnectionState.done:
{
if(noteData.data !=null){
return Padding(
padding: const EdgeInsets.all(8.0),
child: ListView.builder(
itemCount:noteData.data!.length,
itemBuilder: (context,index){
String title=noteData.data[index]['title'];
},
),
);
}
else {
return Center(
child: Text("You don't have any notes yet,create one?"),
);
}
}
}
},
),
);
}
}
So, I am making a notes app using SQF lite taking guidance from DocorCode on youtube, i wrote the same code but its showing some errors related to null checks and i am unable to bypass them not matter what.
no matter what I do add null checks or anything it always shows error , is there anyway to switch off the null check , Please tell me how to fix the problem.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
该问题是在
title = noceData.data [index] ['title']
上出现的,因为可以将数据删除。当您在最高级别检查NULL时,您可以在此处使用!
或更好的方法根据情况提供默认值。至于
FutureBuilder
(包括数据类型)提供了更大的灵活性。用模型替换int
,您可以使其无效,或者只需通过getNotes
。传递空列表。
future lt; list&lt; note&gt;&gt; getNotes()async {...}
提供默认的返回
switch
案例,包括.haserror
是一个不错的选择。探索更多有关
=“ https://stackoverflow.com/q/51983011/10157127”> 我们应该使用它
。
The issue arise on
title=noteData.data[index]['title']
because it is possible to get null on data. As you've checked null on top level, you can use!
here or better approach is providing default value based on cases.As for the
FutureBuilder
including data type provide more flexibility. Replaceint
with your model and you can make it nullable or just pass empty list fromgetNotes
.Future<List<Note>> getNotes() async {...}
Provide a default return from
switch
case, including.hasError
is a good choice.Explore more about
FutureBuilder