Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.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
Firebase 窗户在颤振中是完全错误的_Firebase_Dart_Google Cloud Firestore_Flutter - Fatal编程技术网

Firebase 窗户在颤振中是完全错误的

Firebase 窗户在颤振中是完全错误的,firebase,dart,google-cloud-firestore,flutter,Firebase,Dart,Google Cloud Firestore,Flutter,将数据从Firestore加载到listview时,我收到此警告 W/CursorWindow(15035):窗口已满:请求分配483字节,可用空间274字节,窗口大小2097152字节 我正在起诉作用域模型模式,并在模型类中获取用户配置文件数据。我将所有用户数据保存到模型类中的一个数组中,而不是在小部件树本身中使用streambuilder,这样就更容易对数据进行分页,而且更容易读取。然而,在浏览列表时,我收到一条“窗口已满”警告,我知道为存储用户配置文件的操作分配了太多空间,但是是否有其他方

将数据从Firestore加载到listview时,我收到此警告

W/CursorWindow(15035):窗口已满:请求分配483字节,可用空间274字节,窗口大小2097152字节

我正在起诉作用域模型模式,并在模型类中获取用户配置文件数据。我将所有用户数据保存到模型类中的一个数组中,而不是在小部件树本身中使用streambuilder,这样就更容易对数据进行分页,而且更容易读取。然而,在浏览列表时,我收到一条“窗口已满”警告,我知道为存储用户配置文件的操作分配了太多空间,但是是否有其他方法可以解决此问题

class _ExploreScreenState extends State<ExploreScreen>
    with SingleTickerProviderStateMixin {

  Query _query;
  AnimationController controller;
  Animation<double> animation;
  int limitNum = 4;
  bool startAfter = false;
  User _lastUser;

  @override
  Widget build(BuildContext context) {
    return Container(
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.center,
          children: <Widget>[
            Expanded(
              child: new ScopedModel<ExploreModel>(
                  model: widget.model,
                  child: new ScopedModelDescendant<ExploreModel> (
                    builder: (context, child, model) =>
                    model.users.length != 0 ? GridView.builder(
                        gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
                            crossAxisCount: 2,
                            childAspectRatio: 0.8,
                            mainAxisSpacing: 5.0,
                            crossAxisSpacing: 5.0
                        ),
                        itemCount: model.users.length,
                        itemBuilder: (BuildContext context, int index) {
                          if(index ==  model.users.length-1){
                            model.loadUsers();
                          }
                          return BrowseTile(model.users[index]);
                        }
                    ) : Text('loading...'),
                  )
              ),
            ),
          ],
        )
    );
  }

class ExploreModel extends Model {
  List<User> _users;
  Query _query;
  User _currentUser;
  int limitNum = 20;


  List<User> get users => _users;

  ExploreModel(this._currentUser) {
    _users = new List();
    loadUsers();
  }

  void loadUsers() {
    _query = Firestore.instance.collection('Users').where(
        'gender', isEqualTo: _currentUser.prefGender)
        .limit(limitNum)
        .orderBy('firstName')
        .orderBy('lastName');
    if (_users.length > 0) _query = _query.startAfter(
        [_users[_users.length - 1].firstName, _users[_users.length - 1].lastName
        ]);
    print('Array Size: ');
    print(_users.length);
    _query.snapshots().listen((snapshot) {
      snapshot.documents.forEach((ds) {
        User user = User.fromMap(ds.data, ds.documentID);
        if(user.id != _currentUser.id){
          bool _added = false;
          _users.forEach((userEach) {
            for(var i=0; i<_users.length; i++){
              if(_users[i].id == user.id){
                _users.remove(_users[i]);
                _users.insert(i, user);
                _added = true;
                notifyListeners();
              }
            }
          });
          if (!_added) {
            _users.add(user);
            notifyListeners();
          }
        }
      });
    });
  }
}
class\u ExploreScreenState扩展状态
使用SingleTickerProviderStateMixin{
查询(Query);;
动画控制器;
动画;
int limitNum=4;
bool startAfter=false;
用户(lastUser);
@凌驾
小部件构建(构建上下文){
返回容器(
子:列(
crossAxisAlignment:crossAxisAlignment.center,
儿童:[
扩大(
子:新的ScopedModel(
model:widget.model,
子项:新作用域ModelDescentant(
生成器:(上下文、子项、模型)=>
model.users.length!=0?GridView.builder(
gridDelegate:SliverGridDelegateWithFixedCrossAxisCount(
交叉轴计数:2,
childAspectRatio:0.8,
主轴间距:5.0,
交叉轴间距:5.0
),
itemCount:model.users.length,
itemBuilder:(构建上下文,int索引){
if(index==model.users.length-1){
model.loadUsers();
}
返回浏览文件(model.users[index]);
}
):Text('正在加载…'),
)
),
),
],
)
);
}
类ExploreModel扩展了模型{
列出用户;
查询(Query);;
用户\u当前用户;
int limitNum=20;
列表获取用户=>\u用户;
ExploreModel(此用户){
_用户=新列表();
loadUsers();
}
void loadUsers(){
_query=Firestore.instance.collection('Users')。其中(
“性别”,isEqualTo:_currentUser.prefGender)
.限制(limitNum)
.orderBy('firstName')
.orderBy('lastName');
如果(\u users.length>0)\u query=\u query.startAfter(
[\u users[\u users.length-1].firstName、\u users[\u users.length-1].lastName
]);
打印('数组大小:');
打印(用户长度);
_query.snapshots().listen((快照){
snapshot.documents.forEach((ds){
User User=User.fromMap(ds.data,ds.documentID);
if(user.id!=\u currentUser.id){
bool _added=false;
_users.forEach((userEach){
对于(变量i=0;i可能相关: