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
Flutter 空值上使用的空检查运算符-StaggeredGridView_Flutter_Flutter Layout_Staggered Gridview - Fatal编程技术网

Flutter 空值上使用的空检查运算符-StaggeredGridView

Flutter 空值上使用的空检查运算符-StaggeredGridView,flutter,flutter-layout,staggered-gridview,Flutter,Flutter Layout,Staggered Gridview,我正在开发一个'Notes'应用程序 到目前为止,它有一个主屏幕()和Note()小部件。第一个是显示注释的屏幕,第二个是自定义小部件,通过注释的显示方式进行充气。我正在使用卡片()显示每个便笺 要动态设置卡的大小,我使用的是StaggeredGridView 这是我的密码注释列表是注释数组 import 'package:flutter/material.dart'; import 'package:flutter_staggered_grid_view/flutter_staggered_g

我正在开发一个'Notes'应用程序

到目前为止,它有一个
主屏幕()
Note()
小部件。第一个是显示注释的屏幕,第二个是自定义小部件,通过注释的显示方式进行充气。我正在使用
卡片()
显示每个便笺

要动态设置卡的大小,我使用的是
StaggeredGridView

这是我的密码
注释列表
是注释数组

import 'package:flutter/material.dart';
import 'package:flutter_staggered_grid_view/flutter_staggered_grid_view.dart';
import 'package:get_it/get_it.dart';

import '../models/notes_list.dart';
import '../services/notes_service.dart';
import '../note.dart';
import './add_note_screen.dart';

class HomeScreen extends StatefulWidget {
  @override
  _HomeScreenState createState() => _HomeScreenState();
}

class _HomeScreenState extends State<HomeScreen> {
  NotesService get service => GetIt.I<NotesService>();
  List<NotesList> notesList = [];

  @override
  void initState() {
    notesList = service.getNotes();
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: notesList.length == 0
          ? AppBar(title: Text('Create a Note'))
          : AppBar(title: Text('Safe')),
      body: StaggeredGridView.builder(
        padding: EdgeInsets.all(10),
        itemCount: notesList.length,
        gridDelegate: SliverStaggeredGridDelegateWithFixedCrossAxisCount(
          crossAxisCount: 2,
          staggeredTileBuilder: (index) => StaggeredTile.fit(1),
        ),
        itemBuilder: (_, index) => Note(
          notesList[index].noteTitle,
          notesList[index].noteContent,
          notesList[index].noteDateTime,
        ),
      ),
      floatingActionButton: FloatingActionButton(
        child: Icon(Icons.add),
        onPressed: () => Navigator.push(
            context, MaterialPageRoute(builder: (_) => AddNoteScreen())),
      ),
      floatingActionButtonLocation: FloatingActionButtonLocation.endFloat,
    );
  }
}

我发现
StaggedGridView.builder
在项目不足以覆盖屏幕时抛出该错误,如果使用
shrinkWrap:true
则必须提供有界高度,这不是通用解决方案

但是根据您的期望,
StaggedGridView.countBuilder
更适合您的情况

因此,我使用了
StaggeredGridView.countBuilder
,它需要所有必要的参数,并且它适用于我的
主屏幕
代码:

StaggeredGridView.countBuilder(
    padding: EdgeInsets.all(10),
    itemCount: notesList.length,
    crossAxisCount: 2,
    staggeredTileBuilder: (index) => StaggeredTile.fit(1),
    itemBuilder: (_, index) => Note(
      notesList[index].noteTitle,
      notesList[index].noteContent,
      notesList[index].noteDateTime,
    ),
  )

请提供错误堆栈跟踪,非常抱歉。用错误堆栈跟踪更新了我的问题。我的意思是完全完整的堆栈跟踪,因为您的实现中似乎存在一些逻辑错误。带有
StaggedGridView
的小部件的完整代码将非常有用,请检查我是否需要添加更多详细信息。尝试添加
shrinkWrap:true
它解决了手头的两个问题。谢谢但我仍然需要找出错误的原因。
StaggeredGridView.countBuilder(
    padding: EdgeInsets.all(10),
    itemCount: notesList.length,
    crossAxisCount: 2,
    staggeredTileBuilder: (index) => StaggeredTile.fit(1),
    itemBuilder: (_, index) => Note(
      notesList[index].noteTitle,
      notesList[index].noteContent,
      notesList[index].noteDateTime,
    ),
  )