when I trying to run this app I got the following error.
Failed assertion: boolean expression must not be null
The relevant error-causing widget was:
MyApp file:///E:/Flutter/quizmakerapp/lib/main.dart:9:10
When the exception was thrown, this was the stack:
#0 _MyAppState.build (package:quizapp2/main.dart:44:13)
#1 StatefulElement.build (package:flutter/src/widgets/framework.dart:4663:28)
#2 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4546:15)
#3 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4719:11)
#4 Element.rebuild (package:flutter/src/widgets/framework.dart:4262:5)
Hi, I am making a Quiz App using a flutter and android studio. when I implementing this app I got an error like this. those are my files when I'm trying to run this it gives the above error. I tried some solutions but it didn't work for me. and also I am new to flutter. Any ideas on the issue?
main.dart
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:quizapp2/helper/authenticate.dart';
import 'package:quizapp2/helper/constants.dart';
import 'package:quizapp2/views/home.dart';
import 'package:shared_preferences/shared_preferences.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatefulWidget {
// This widget is the root of your application.
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
bool isUserLoggedIn = false;
@override
void initState() {
getLoggedInState();
super.initState();
}
getLoggedInState() async {
await Constants.getUerLoggedInSharedPreference().then((value) {
setState(() {
isUserLoggedIn = value;
});
});
}
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Quiz App',
debugShowCheckedModeBanner: false,
theme: ThemeData(
visualDensity: VisualDensity.adaptivePlatformDensity,
),
home: isUserLoggedIn ? Home() : Authenticate(),
);
}
}
home.dart
import 'package:flutter/material.dart';
import 'package:quizapp2/services/database.dart';
import 'package:quizapp2/views/create_quiz.dart';
import 'package:quizapp2/views/quiz_play.dart';
import 'package:quizapp2/widget/widget.dart';
class Home extends StatefulWidget {
@override
_HomeState createState() => _HomeState();
}
class _HomeState extends State<Home> {
Stream quizStream;
DatabaseService databaseService = new DatabaseService();
Widget quizList() {
return Container(
child: Column(
children: [
StreamBuilder(
stream: quizStream,
builder: (context, snapshot) {
return snapshot.data == null
? Container()
: ListView.builder(
shrinkWrap: true,
physics: ClampingScrollPhysics(),
itemCount: snapshot.data.documents.length,
itemBuilder: (context, index) {
return QuizTile(
noOfQuestions: snapshot.data.documents.length,
imageUrl:
snapshot.data.documents[index].data['quizImgUrl'],
title:
snapshot.data.documents[index].data['quizTitle'],
description:
snapshot.data.documents[index].data['quizDesc'],
id: snapshot.data.documents[index].data["id"],
);
});
},
)
],
),
);
}
@override
void initState() {
databaseService.getQuizData().then((value) {
quizStream = value;
setState(() {});
});
super.initState();
}
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.white,
appBar: AppBar(
title: AppLogo(),
brightness: Brightness.light,
elevation: 0.0,
backgroundColor: Colors.transparent,
//brightness: Brightness.li,
),
body: quizList(),
floatingActionButton: FloatingActionButton(
child: Icon(Icons.add),
onPressed: () {
Navigator.push(
context, MaterialPageRoute(builder: (context) => CreateQuiz()));
},
),
);
}
}
class QuizTile extends StatelessWidget {
final String imageUrl, title, id, description;
final int noOfQuestions;
QuizTile(
{@required this.title,
@required this.imageUrl,
@required this.description,
@required this.id,
@required this.noOfQuestions});
@override
Widget build(BuildContext context) {
return GestureDetector(
onTap: (){
Navigator.push(context, MaterialPageRoute(
builder: (context) => QuizPlay(id)
));
},
child: Container(
padding: EdgeInsets.symmetric(horizontal: 24),
height: 150,
child: ClipRRect(
borderRadius: BorderRadius.circular(8),
child: Stack(
children: [
Image.network(
imageUrl,
fit: BoxFit.cover,
width: MediaQuery.of(context).size.width,
),
Container(
color: Colors.black26,
child: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(
title,
style: TextStyle(
fontSize: 18,
color: Colors.white,
fontWeight: FontWeight.w500),
),
SizedBox(height: 4,),
Text(
description,
style: TextStyle(
fontSize: 13,
color: Colors.white,
fontWeight: FontWeight.w500),
)
],
),
),
)
],
),
),
),
);
}
}
authenticate.dart
import 'package:flutter/material.dart';
import 'package:quizapp2/views/signin.dart';
import 'package:quizapp2/views/signup.dart';
class Authenticate extends StatefulWidget {
@override
_AuthenticateState createState() => _AuthenticateState();
}
class _AuthenticateState extends State<Authenticate> {
bool showSignIn = true;
void toggleView() {
setState(() {
showSignIn = !showSignIn;
});
}
@override
Widget build(BuildContext context) {
if (showSignIn) {
return SignIn(toogleView: toggleView);
} else {
return SignUp(toogleView: toggleView);
}
}
}
Could you please help me on how to fix that error?