I've been getting the following error on my Flutter Application:
The argument type 'Null' can't be assigned to the parameter type 'Task'.
this is my homepage.dart
// ignore_for_file: prefer_const_literals_to_create_immutables
import 'package:flutter/material.dart';
import 'package:flutter_to_do/database_helper.dart';
import 'package:flutter_to_do/screens/taskpage.dart';
import 'package:flutter_to_do/widgets.dart';
class Homepage extends StatefulWidget {
@override
_HomepageState createState() => _HomepageState();
}
class _HomepageState extends State<Homepage> {
DatabaseHelper _dbHelper = DatabaseHelper();
@override
Widget build(BuildContext context) {
return Scaffold(
body: SafeArea(
child: Container(
width: double.infinity,
padding: const EdgeInsets.symmetric(horizontal: 24.0),
color: const Color(0xFFF6F6F6),
child: Stack(
children: [
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Container(
margin: const EdgeInsets.only(
top: 32.0,
bottom: 32.0,
),
child: const Image(
image: AssetImage('assets/images/logo.png'),
),
),
Expanded(
child: FutureBuilder(
initialData: [],
future: _dbHelper.getTasks(),
builder: (context, AsyncSnapshot snapshot) {
return ScrollConfiguration(
behavior: NoGlowBehaviour(),
child: ListView.builder(
itemCount: snapshot.data.length,
itemBuilder: (context, index) {
return GestureDetector(
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => Taskpage(
task: snapshot.data[index],
),
),
).then(
(value) {
setState(() {});
},
);
},
child: TaskCardWidget(
title: snapshot.data[index].title,
desc: snapshot.data[index].description,
),
);
},
),
);
},
),
)
],
),
Positioned(
bottom: 24.0,
right: 0.0,
child: GestureDetector(
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => Taskpage(
task: null,
)),
).then((value) {
setState(() {});
});
},
child: Container(
width: 60.0,
height: 60.0,
decoration: BoxDecoration(
gradient: const LinearGradient(
colors: [Color(0xFF7349FE), Color(0xFF643FDB)],
begin: Alignment(0.0, -1.0),
end: Alignment(0.0, 1.0)),
borderRadius: BorderRadius.circular(20.0),
),
child: const Image(
image: AssetImage(
"assets/images/add_icon.png",
),
),
),
),
)
],
),
),
),
);
}
}
The error happens at:
task: null (line 85)
I am a beginner at flutter and been trying to solve this issue for a while now. What should I do to solve it?
CodePudding user response:
You are triyng to navigate to another screen, passing an argument as null
and then you use setState
. Basically setState will rebuild everytinh under your build method. Try to review this part of your code.
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => Taskpage(
task: null,
)),
).then((value) {
setState(() {});
});
CodePudding user response:
This may be a nullable exception. Try doing this: task: snapshot.data[index]!
Otherwise you should allow the task attribute to be nullable by declaring it with a ? before the variable type instead. For more info on nullables in dart visit Sound null safety