我想要一个包含卖方,买方和卖方产品的应用程序。
我有一个带有名称产品的类,一个带有名称卖方的类和一个带有名称产品提供者的类,在这两个类中都记录了下来。我把所有的课都写在那里。
类产品:
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,
});
}
类卖方:
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});
}
类产品提供者:
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)中访问”
所以我写下“静态”,错误是这样修复的:
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();
}
}
但是我担心通过静态更改,卖方将无法再添加新项目,编辑项目或删除项目。我错了吗?
最佳答案
我认为您在错误的变量(_profile)的字体中添加了static,它应该在_items的前面,因为您正在使用_items来初始化其他变量,例如_profile。
静态变量表示类变量,表示您为该类创建的任何数量的对象(但该变量)将在所有该对象之间共享。您可以执行所有操作,例如additem,deleteitem或edit。
此外,您不能使用object访问_items变量。您可以使用类名来访问它。
进一步了解Static
关于list - Flutter:我如何在列表中实现列表?错误:只能在initializers.dart中访问静态成员(implicit_this_reference_in_initializer),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61487760/