Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image 该页面可以';t在我的颤振应用程序(更新)中正确加载页面无效参数:源不能为null_Image_Flutter_Dart - Fatal编程技术网

Image 该页面可以';t在我的颤振应用程序(更新)中正确加载页面无效参数:源不能为null

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

我已经更新了我发布的问题: 我已从另一个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: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)