我已经尝试了很多方法来传递变量points,但我不能在下面的另一个类中使用它,我留下了基本代码。有问题的变量是pointspage中的points,我想在cartpage中使用它
购物车页面
class CartPage extends StatefulWidget {
_CartPagestate createState() => _CartPagestate();
}
class _CartPagestate extends State<CartPage> {
@override
Widget build(BuildContext context) {//some code...}
点数页码
class points extends StatefulWidget {
_pointsState createState() => _pointsState();
}
class _pointsState extends State<cubox> {
int points = 0;
@override
void initState() {
super.initState();
_loadPoints();
}
_loadPunti() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
setState(() {
punti = (prefs.getInt('points') ?? 0);
});
}
_savePunti() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
prefs.setInt('points', points);
}
@override
Widget build(BuildContext context) { // some code...}
问题中的变量是points,它位于pointpage中,我想在cartpage中使用它。cartpage也有一个cardmodel我想使用points变量来进行“购买”,但我不能。
推车模型
class CartModel extends ChangeNotifier {
// list of items on sale
final List _shopItems = const [
// [ itemName, itemPrice, imagePath, color ]
["Avocado", "4", "assets/images/avocado.png", Colors.green],
["Banana", "2", "assets/images/banana.png", Colors.yellow],
["chicken", "12", "assets/images/chicken.png", Colors.brown],
["water", "1", "assets/images/water.png", Colors.blue],
["apple", "3", "assets/images/mela.png", Colors.red],
["chocolate", "3", "assets/images/broccoli.png", Colors.brown],
];
final List _other = const [
["Avocado", "14000", "assets/images/avocado.png", Colors.orange],
["Banana", "2", "assets/images/banana.png", Colors.blueGrey],
["chicken", "12", "assets/images/chicken.png", Colors.red],
["water", "1", "assets/images/water.png", Colors.blue],
];
// list of cart items
final List _cartItems = [];
get other => _other;
get cartItems => _cartItems;
get shopItems => _shopItems;
// add item to cart
void addItemToCart(int index) {
_cartItems.add(_shopItems[index]);
notifyListeners();
}
// remove item from cart
void removeItemFromCart(int index) {
_cartItems.removeAt(index);
notifyListeners();
}
// calculate total price
String calculateTotal() {
double totalPrice = 0;
for (int i = 0; i < cartItems.length; i++) {
totalPrice += double.parse(cartItems[i][1].toString());
}
return totalPrice.toStringAsFixed(2);
}
}
1条答案
按热度按时间p1tboqfb1#
如果要访问另一个类中的变量,请将该变量设置为静态,并通过在另一个类中调用
ClassName.VariableName
来使用它。