dart 我不能传递变量为什么? Flutter

bsxbgnwa  于 2023-03-15  发布在  Flutter
关注(0)|答案(1)|浏览(183)

我已经尝试了很多方法来传递变量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);
  }
}
p1tboqfb

p1tboqfb1#

如果要访问另一个类中的变量,请将该变量设置为静态,并通过在另一个类中调用ClassName.VariableName来使用它。

//global value 
int globalPoints = 23;

class MyWidget extends StatefulWidget {
  MyWidget({super.key});
  // variable inside first class 
  static int counter = 1;

  @override
  State<MyWidget> createState() => _MyWidgetState();
}

class _MyWidgetState extends State<MyWidget> {
  @override
  Widget build(BuildContext context) {
    return const Placeholder();
  }
}
class MyWidget2 extends StatefulWidget {
  const MyWidget2({super.key});

  @override
  State<MyWidget2> createState() => _MyWidget2State();
}

class _MyWidget2State extends State<MyWidget2> {
  //accessing it inside the other class 
  int counter2 = MyWidget.counter;
  @override
  Widget build(BuildContext context) {
    return const Placeholder();
  }
}

相关问题