Android studio 断言失败:布尔表达式不能为null??如何解决这个问题?
当我尝试运行此应用程序时,出现以下错误Android studio 断言失败:布尔表达式不能为null??如何解决这个问题?,android-studio,flutter,dart,Android Studio,Flutter,Dart,当我尝试运行此应用程序时,出现以下错误 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 _
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)
嗨,我正在用一个Flitter和android studio制作一个测验应用程序。当我实现这个应用程序时,我遇到了这样一个错误。这些是我的文件,当我试图运行此程序时,会出现上述错误。我尝试了一些解决方案,但对我来说不起作用。我也不太会飞。对这个问题有什么想法吗
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(),
);
}
}
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),
)
],
),
),
)
],
),
),
),
);
}
}
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);
}
}
}
导入“包装:颤振/材料.省道”;
导入“包:flifter/services.dart”;
导入“package:quizapp2/helper/authenticate.dart”;
导入“package:quizapp2/helper/constants.dart”;
导入“package:quizapp2/views/home.dart”;
导入“package:shared_preferences/shared_preferences.dart”;
void main(){
runApp(MyApp());
}
类MyApp扩展了StatefulWidget{
//此小部件是应用程序的根。
@凌驾
_MyAppState createState()=>\u MyAppState();
}
类MyAppState扩展了状态{
bool isUserLoggedIn=false;
@凌驾
void initState(){
getLoggedInState();
super.initState();
}
getLoggedInState()异步{
wait Constants.getuerloggedinSharedReference().then((值){
设置状态(){
isUserLoggedIn=值;
});
});
}
@凌驾
小部件构建(构建上下文){
返回材料PP(
标题:“问答应用程序”,
debugShowCheckedModeBanner:false,
主题:主题数据(
视觉密度:视觉密度。自适应平台密度,
),
home:isUserLoggedIn?home():Authenticate(),
);
}
}
本垒打。飞镖
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(),
);
}
}
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),
)
],
),
),
)
],
),
),
),
);
}
}
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);
}
}
}
导入“包装:颤振/材料.省道”;
导入“package:quizapp2/services/database.dart”;
导入“package:quizapp2/views/create_quick.dart”;
导入“包:quizapp2/views/quick_play.dart”;
导入“package:quizapp2/widget/widget.dart”;
类Home扩展了StatefulWidget{
@凌驾
_HomeState createState()=>\u HomeState();
}
类(HomeState扩展状态){
溪流;
DatabaseService DatabaseService=新的DatabaseService();
Widget quizList(){
返回容器(
子:列(
儿童:[
StreamBuilder(
溪流:quizStream,
生成器:(上下文,快照){
返回snapshot.data==null
?容器()
:ListView.builder(
收缩膜:对,
物理:ClampingScrollPhysics(),
itemCount:snapshot.data.documents.length,
itemBuilder:(上下文,索引){
回程快件(
noOfQuestions:snapshot.data.documents.length,
图像URL:
snapshot.data.documents[index].data['quizImgUrl'],
标题:
snapshot.data.documents[index].data['quizTitle'],
说明:
snapshot.data.documents[index].data['quizDesc'],
id:snapshot.data.documents[index].data[“id”],
);
});
},
)
],
),
);
}
@凌驾
void initState(){
databaseService.getQuizData().then((值){
quizStream=值;
setState((){});
});
super.initState();
}
@凌驾
小部件构建(构建上下文){
返回脚手架(
背景颜色:Colors.white,
appBar:appBar(
标题:AppLogo(),
亮度:亮度,亮度,
标高:0.0,
背景颜色:颜色。透明,
//亮度:亮度。李,
),
正文:quizList(),
浮动操作按钮:浮动操作按钮(
子:图标(Icons.add),
已按下:(){
导航器。推(
context,materialpage(builder:(context)=>createquick());
},
),
);
}
}
类QuizTile扩展了无状态小部件{
最终字符串imageUrl、标题、id、说明;
期末考试;
奎茨特尔(
{@需要这个标题,
@需要此.imageUrl,
@需要此说明,
@需要这个.id,
@需要此选项。noOfQuestions});
@凌驾
小部件构建(构建上下文){
返回手势检测器(
onTap:(){
Navigator.push(上下文、MaterialPage路由)(
生成器:(上下文)=>QuizPlay(id)
));
},
子:容器(
填充:边缘组。对称(水平:24),
身高:150,
孩子:ClipRRect(
边界半径:边界半径。圆形(8),
子:堆栈(
儿童:[
图像网络(
imageUrl,
适合:BoxFit.cover,
宽度:MediaQuery.of(context).size.width,
),
容器(
颜色:颜色。黑色,
儿童:中心(
子:列(
mainAxisAlignment:mainAxisAlignment.center,
儿童:[
正文(
标题
样式:TextStyle(
尺码:18,
颜色:颜色,白色,
fontWeight:fontWeight.w500),
),
尺寸箱(高度:4,),
正文(
描述
样式:TextStyle(
尺寸:13,
颜色:颜色,白色,
fontWeight:fontWeight.w500),
)
],
),
),
)
],
),
),
),
);
}
}
验证。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(),
);
}
}
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),
)
],
),
),
)
],
),
),
),
);
}
}
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);
}
}
}
导入“包装:颤振/材料.省道”;
导入“包:quizapp2/views/signin.dart”;
导入“package:quizapp2/views/signup.dart”;