首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Flutter:如何在列表中实现列表?错误:在initializers.dart(implicit_this_reference_in_initializer)中只能访问静态成员

Flutter:如何在列表中实现列表?错误:在initializers.dart(implicit_this_reference_in_initializer)中只能访问静态成员
EN

Stack Overflow用户
提问于 2020-04-29 02:51:10
回答 1查看 306关注 0票数 0

我想要一个应用程序与卖家,买家和卖家的产品。

我有一个名为product的类,一个名为seller的类和一个名为products provider的类,这两个类都被写下来。我在那里写了所有的类。

类产品:

代码语言:javascript
复制
import 'package:flutter/material.dart';
import 'package:flutter/foundation.dart';

class Product with ChangeNotifier {
  final String id;
  final String rubric;
  final Color rubricColor;
  final String title;
  final String imagePath;
  final String description;
  final double price;
  bool isFavouriteProduct;

  Product({
    @required this.id,
    @required this.title,
    @required this.rubric,
    @required this.rubricColor,
    this.imagePath = 'assets/images/defaultpicture.png',
    this.description,
    @required this.price,
    this.isFavouritProduct = false,
  });
}

类别卖家:

代码语言:javascript
复制
import 'package:flutter/material.dart';
import '**/providers/product.dart';

class Seller with ChangeNotifier {
  final String id;
  final String title;
  bool isFavourite;

  final List<Product> items;


  Seller({this.id, this.isFavourite, this.items, this.title});
}

ProductsProvider类:

代码语言:javascript
复制
import 'package:flutter/material.dart';
import '***/providers/seller.dart';
import './product.dart';

class ProductsProvider with ChangeNotifier{

  List<Seller> _profile = [
    Seller(id: '1', isFavourite: false, title: 'Blabla-store', items: _items)
  ];

  List<Product> _items = [
  Product(
    id: 'a1',
    title: 'blablastore',
    rubric: '',
    rubricColor: Colors.orange,
    description: 'blablabla',
    imagePath: 'assets/images/***.jpeg',
    price: 200000.00,
  ),
  Product(
    id: 'a2',
    title: 'blablastore2',
    rubric: '',
    rubricColor: Colors.blue,
    description:
        'blablabla,
    imagePath: 'assets/images/nah.jpg',
    price: 49.99,
  ),
  Product(
    id: 'a3',
    title: 'Mir fällt nix ein',
    rubric: '',
    rubricColor: Colors.redAccent,
    description: 'weiß nicht',
    price: 22.22,
  )
];

  List<Product> get items{
    return [..._items];
  }

  Product findById(String id){
    return _items.firstWhere((product)=> product.id == id);
  }

  void addProduct(){
    notifyListeners();
  }
}

但是在ProductsProvider类中,通过items属性->“在initializers.dart (Implicit_this_reference_in_initializer)中只能访问静态成员”,我得到了这个错误。

所以我写下了"static“,错误是这样修复的:

代码语言:javascript
复制
import 'package:flutter/material.dart';
import '***/providers/seller.dart';
import './product.dart';

class ProductsProvider with ChangeNotifier{

  List<Seller> _profile = [
    Seller(id: '1', isFavourite: false, title: 'Blabla-store', items: _items)
  ];

  static List<Product> _items = [
  Product(
    id: 'a1',
    title: 'blablastore',
    rubric: '',
    rubricColor: Colors.orange,
    description: 'blablabla',
    imagePath: 'assets/images/turkitchdoener.jpeg',
    price: 200000.00,
  ),
  Product(
    id: 'a2',
    title: 'blablastore2',
    rubric: '',
    rubricColor: Colors.blue,
    description:
        'blablabla,
    imagePath: 'assets/images/nah.jpg',
    price: 49.99,
  ),
  Product(
    id: 'a3',
    title: 'Mir fällt nix ein',
    rubric: '',
    rubricColor: Colors.redAccent,
    description: 'weiß nicht',
    price: 22.22,
  )
];

  List<Product> get items{
    return [..._items];
  }

  Product findById(String id){
    return _items.firstWhere((product)=> product.id == id);
  }

  void addProduct(){
    notifyListeners();
  }
}

但我担心,通过静态更改,卖家不能再添加新项目,编辑项目或删除项目。我说错了吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-29 03:10:03

我认为你在错误的变量( _profile )的字体中添加了静态变量,它应该放在_items前面,因为你在初始化其他变量时使用了_items,比如_profile。

静态变量意味着类变量,意味着无论您为该类创建多少对象,但该变量将在所有对象之间共享。你可以做所有的事情,如添加项目,删除项目或编辑。

此外,您不能使用object访问_items变量。你可以使用类名来访问它。

了解有关Static的更多信息

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61487760

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档