Image 该页面可以';t在我的颤振应用程序(更新)中正确加载页面无效参数:源不能为null
我已经更新了我发布的问题: 我已从另一个dart文件获取页面小部件。 我使用extract方法而不是widget更改了一个页面中的所有页面,因此我从第一个函数中删除了future:Image 该页面可以';t在我的颤振应用程序(更新)中正确加载页面无效参数:源不能为null,image,flutter,dart,Image,Flutter,Dart,我已经更新了我发布的问题: 我已从另一个dart文件获取页面小部件。 我使用extract方法而不是widget更改了一个页面中的所有页面,因此我从第一个函数中删除了future: import 'package:flutter/material.dart'; import 'package:http/http.dart' as http; import 'package:shared_preferences/shared_preferences.dart'; import 'dart:conv
import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;
import 'package:shared_preferences/shared_preferences.dart';
import 'dart:convert';
class Home extends StatefulWidget {
@override
_HomeState createState() => _HomeState();
}
class _HomeState extends State<Home> {
var username;
var userId;
var lang;
var savedCourseId;
var savedDayId;
// getting m_id from status user
void getUserStatus() async {
SharedPreferences preferences = await SharedPreferences.getInstance();
setState(() {
username = preferences.getString('username');
userId = preferences.getString('logined_id');
lang = preferences.getString('lang');
});
var url =
"http://10.0.2.2/jiyan/test/api/users/status_user.php?username=$username";
var response = await http.get(url);
var data = jsonDecode(response.body);
setState(() {
savedCourseId = data['m_id'];
savedDayId = int.parse(data['d_id']);
});
}
@override
void initState() {
getUserStatus();
super.initState();
}
@override
Widget build(BuildContext context) {
final size = MediaQuery.of(context).size.width;
return Scaffold(
drawer: buildDrawerMyDrawer(),
appBar: AppBar(
backgroundColor: Colors.pink[900],
title: Text(
'ژیان و قورئان',
style: TextStyle(fontSize: 32),
),
centerTitle: true,
),
body: Container(
padding: const EdgeInsets.only(top: 20),
decoration: BoxDecoration(
image: DecorationImage(
image: AssetImage('./assets/images/background.png'),
fit: BoxFit.cover,
)),
child: Directionality(
textDirection: TextDirection.rtl,
child: ListView(
children: [
Row(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
buildContainer(size, 1, userId, savedCourseId),
buildContainer(size, 2, userId, savedCourseId),
buildContainer(size, 3, userId, savedCourseId),
],
),
Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
buildContainer(size, 4, userId, savedCourseId),
buildContainer(size, 5, userId, savedCourseId),
],
),
Row(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
buildContainer(size, 6, userId, savedCourseId),
buildContainer(size, 7, userId, savedCourseId),
buildContainer(size, 8, userId, savedCourseId),
],
),
Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
buildContainer(size, 9, userId, savedCourseId),
buildContainer(size, 10, userId, savedCourseId),
],
),
Row(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
buildContainer(size, 11, userId, savedCourseId),
buildContainer(size, 12, userId, savedCourseId),
buildContainer(size, 13, userId, savedCourseId),
],
),
],
),
),
),
);
}
//
Container buildContainer(size, courseId, userID, savedCourseId) {
return Container(
width: 0.25 * size,
child: InkWell(
onTap: courseId <= int.parse(savedCourseId)
? () {
Navigator.of(context).pushNamed('weeks', arguments: {
'courseId': courseId,
'lang': lang,
'savedDayId': savedDayId,
'savedCourseID': int.parse(savedCourseId),
'userID': userID,
});
}
: null,
child: Image(
image: AssetImage(courseId <= int.parse(savedCourseId)
? './assets/images/months/course' + courseId.toString() + '.png'
: './assets/images/months/course' +
courseId.toString() +
'c.png'),
),
),
);
}
}
现在如何解决此问题?经过多次测试后,我发现错误是由savedCourseId变量引起的,在加载页面时,它有空数据,因此它给了我此错误,在我添加条件语句之前,如果savedCourseId的值为空,请显示conatiner,否则显示页面详细信息,因此现在没有发现错误: 页面如下所示:
import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;
import 'package:shared_preferences/shared_preferences.dart';
import 'dart:convert';
class Home extends StatefulWidget {
@override
_HomeState createState() => _HomeState();
}
class _HomeState extends State<Home> {
var username;
var userId;
var lang;
var savedCourseId;
var savedDayId;
// getting m_id from status user
void getUserStatus() async {
SharedPreferences preferences = await SharedPreferences.getInstance();
setState(() {
username = preferences.getString('username');
userId = preferences.getString('logined_id');
lang = preferences.getString('lang');
});
var url =
"http://10.0.2.2/jiyan/test/api/users/status_user.php?username=$username";
var response = await http.get(url);
var data = jsonDecode(response.body);
setState(() {
savedCourseId = data['m_id'];
savedDayId = int.parse(data['d_id']);
});
}
@override
void initState() {
getUserStatus();
super.initState();
}
@override
Widget build(BuildContext context) {
final size = MediaQuery.of(context).size.width;
return Scaffold(
drawer: buildDrawerMyDrawer(),
appBar: AppBar(
backgroundColor: Colors.pink[900],
title: Text(
'ژیان و قورئان',
style: TextStyle(fontSize: 32),
),
centerTitle: true,
),
body: Container(
padding: const EdgeInsets.only(top: 20),
decoration: BoxDecoration(
image: DecorationImage(
image: AssetImage('./assets/images/background.png'),
fit: BoxFit.cover,
)),
child: Directionality(
textDirection: TextDirection.rtl,
child: savedCourseId != null //---------Add this condition
? ListView(
children: [
Row(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
buildContainer(size, 1, userId, savedCourseId),
buildContainer(size, 2, userId, savedCourseId),
buildContainer(size, 3, userId, savedCourseId),
],
),
Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
buildContainer(size, 4, userId, savedCourseId),
buildContainer(size, 5, userId, savedCourseId),
],
),
Row(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
buildContainer(size, 6, userId, savedCourseId),
buildContainer(size, 7, userId, savedCourseId),
buildContainer(size, 8, userId, savedCourseId),
],
),
Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
buildContainer(size, 9, userId, savedCourseId),
buildContainer(size, 10, userId, savedCourseId),
],
),
Row(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
buildContainer(size, 11, userId, savedCourseId),
buildContainer(size, 12, userId, savedCourseId),
buildContainer(size, 13, userId, savedCourseId),
],
),
],
)
: Container()),
),
);
}
//
Container buildContainer(size, courseId, userID, savedCourseId) {
return Container(
width: 0.25 * size,
child: InkWell(
onTap: courseId <= int.parse(savedCourseId)
? () {
Navigator.of(context).pushNamed('weeks', arguments: {
'courseId': courseId,
'lang': lang,
'savedDayId': savedDayId,
'savedCourseID': int.parse(savedCourseId),
'userID': userID,
});
}
: null,
child: Image(
image: AssetImage(courseId <= int.parse(savedCourseId)
? './assets/images/months/course' + courseId.toString() + '.png'
: './assets/images/months/course' +
courseId.toString() +
'c.png'),
),
),
);
}
}
导入“包装:颤振/材料.省道”;
将“package:http/http.dart”导入为http;
导入“package:shared_preferences/shared_preferences.dart”;
导入“dart:convert”;
类Home扩展了StatefulWidget{
@凌驾
_HomeState createState()=>\u HomeState();
}
类(HomeState扩展状态){
var用户名;
var用户id;
瓦朗;
var savedCourseId;
var-savedDayId;
//正在从状态用户获取m_id
void getUserStatus()异步{
SharedReferences首选项=等待SharedReferences.getInstance();
设置状态(){
username=preferences.getString('username');
userId=preferences.getString('logined_id');
lang=preferences.getString('lang');
});
变量url=
"http://10.0.2.2/jiyan/test/api/users/status_user.php?username=$username”;
var response=wait http.get(url);
var data=jsonDecode(response.body);
设置状态(){
savedCourseId=data['m_id'];
savedDayId=int.parse(数据['d_id']);
});
}
@凌驾
void initState(){
getUserStatus();
super.initState();
}
@凌驾
小部件构建(构建上下文){
最终大小=MediaQuery.of(context).size.width;
返回脚手架(
抽屉:buildDrawerMyDrawer(),
appBar:appBar(
背景颜色:颜色。粉红色[900],
标题:正文(
'ژیان و قورئان',
样式:TextStyle(字体大小:32),
),
标题:对,
),
主体:容器(
填充:仅限常量边集(顶部:20),
装饰:盒子装饰(
图像:装饰图像(
image:AssetImage('./assets/images/background.png'),
适合:BoxFit.cover,
)),
孩子:方向性(
textDirection:textDirection.rtl,
子项:savedCourseId!=null/-----------添加此条件
?列表视图(
儿童:[
划船(
mainAxisAlignment:mainAxisAlignment.spaceAround,
儿童:[
buildContainer(大小,1,用户ID,savedCourseId),
buildContainer(大小,2,用户ID,savedCourseId),
buildContainer(大小,3,用户ID,savedCourseId),
],
),
划船(
mainAxisAlignment:mainAxisAlignment.space,
儿童:[
buildContainer(大小,4,用户ID,savedCourseId),
buildContainer(大小,5,用户ID,savedCourseId),
],
),
划船(
mainAxisAlignment:mainAxisAlignment.spaceAround,
儿童:[
buildContainer(大小,6,用户ID,savedCourseId),
buildContainer(大小,7,用户ID,savedCourseId),
buildContainer(大小,8,用户ID,savedCourseId),
],
),
划船(
mainAxisAlignment:mainAxisAlignment.space,
儿童:[
buildContainer(大小,9,用户ID,savedCourseId),
buildContainer(大小,10,用户ID,savedCourseId),
],
),
划船(
mainAxisAlignment:mainAxisAlignment.spaceAround,
儿童:[
buildContainer(大小,11,用户ID,savedCourseId),
buildContainer(大小,12,用户ID,savedCourseId),
buildContainer(大小,13,用户ID,savedCourseId),
],
),
],
)
:Container()),
),
);
}
//
容器buildContainer(大小、courseId、用户ID、savedCourseId){
返回容器(
宽度:0.25*尺寸,
孩子:InkWell(
onTap:courseId经过多次测试,我发现错误是由savedCourseId变量引起的,在加载页面时它有空数据,因此它给了我这个错误,在我添加条件语句之前,如果savedCourseId的值为空,只需显示conatiner,否则显示页面详细信息,因此现在没有发现错误:
页面如下所示:
import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;
import 'package:shared_preferences/shared_preferences.dart';
import 'dart:convert';
class Home extends StatefulWidget {
@override
_HomeState createState() => _HomeState();
}
class _HomeState extends State<Home> {
var username;
var userId;
var lang;
var savedCourseId;
var savedDayId;
// getting m_id from status user
void getUserStatus() async {
SharedPreferences preferences = await SharedPreferences.getInstance();
setState(() {
username = preferences.getString('username');
userId = preferences.getString('logined_id');
lang = preferences.getString('lang');
});
var url =
"http://10.0.2.2/jiyan/test/api/users/status_user.php?username=$username";
var response = await http.get(url);
var data = jsonDecode(response.body);
setState(() {
savedCourseId = data['m_id'];
savedDayId = int.parse(data['d_id']);
});
}
@override
void initState() {
getUserStatus();
super.initState();
}
@override
Widget build(BuildContext context) {
final size = MediaQuery.of(context).size.width;
return Scaffold(
drawer: buildDrawerMyDrawer(),
appBar: AppBar(
backgroundColor: Colors.pink[900],
title: Text(
'ژیان و قورئان',
style: TextStyle(fontSize: 32),
),
centerTitle: true,
),
body: Container(
padding: const EdgeInsets.only(top: 20),
decoration: BoxDecoration(
image: DecorationImage(
image: AssetImage('./assets/images/background.png'),
fit: BoxFit.cover,
)),
child: Directionality(
textDirection: TextDirection.rtl,
child: savedCourseId != null //---------Add this condition
? ListView(
children: [
Row(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
buildContainer(size, 1, userId, savedCourseId),
buildContainer(size, 2, userId, savedCourseId),
buildContainer(size, 3, userId, savedCourseId),
],
),
Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
buildContainer(size, 4, userId, savedCourseId),
buildContainer(size, 5, userId, savedCourseId),
],
),
Row(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
buildContainer(size, 6, userId, savedCourseId),
buildContainer(size, 7, userId, savedCourseId),
buildContainer(size, 8, userId, savedCourseId),
],
),
Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
buildContainer(size, 9, userId, savedCourseId),
buildContainer(size, 10, userId, savedCourseId),
],
),
Row(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
buildContainer(size, 11, userId, savedCourseId),
buildContainer(size, 12, userId, savedCourseId),
buildContainer(size, 13, userId, savedCourseId),
],
),
],
)
: Container()),
),
);
}
//
Container buildContainer(size, courseId, userID, savedCourseId) {
return Container(
width: 0.25 * size,
child: InkWell(
onTap: courseId <= int.parse(savedCourseId)
? () {
Navigator.of(context).pushNamed('weeks', arguments: {
'courseId': courseId,
'lang': lang,
'savedDayId': savedDayId,
'savedCourseID': int.parse(savedCourseId),
'userID': userID,
});
}
: null,
child: Image(
image: AssetImage(courseId <= int.parse(savedCourseId)
? './assets/images/months/course' + courseId.toString() + '.png'
: './assets/images/months/course' +
courseId.toString() +
'c.png'),
),
),
);
}
}
导入“包装:颤振/材料.省道”;
将“package:http/http.dart”导入为http;
导入“package:shared_preferences/shared_preferences.dart”;
导入“dart:convert”;
类Home扩展了StatefulWidget{
@凌驾
_HomeState createState()=>\u HomeState();
}
类(HomeState扩展状态){
var用户名;
var用户id;
瓦朗;
var savedCourseId;
var-savedDayId;
//正在从状态用户获取m_id
void getUserStatus()异步{
SharedReferences首选项=等待SharedReferences.getInstance();
设置状态(){
username=preferences.getString('username');
userId=preferences.getString('logined_id');
lang=preferences.getString('lang');
});
变量url=
"http://10.0.2.2/jiyan/test/api/users/status_user.php?username=$username”;
var response=wait http.get(url);
var data=jsonDecode(response.body);
设置状态(){
savedCourseId=data['m_id'];
savedDayId=int.parse(数据['d_id']);
});
}
@凌驾
void initState(){
getUserStatus();
super.initState();
}
@凌驾
小部件构建(BuildC)