未定义名称“authToken”。尝试将名称更正为已定义的名称,或定义名称

问题描述 投票:0回答:1

我在 Products.dart 中定义了名称“authToken”并将其导入。

import 'dart:io';
import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;
import 'dart:convert';
import 'package:my_shop/providers/product.dart';

class Products with ChangeNotifier {
  List<Product> _items = [];

  final String authToken;
  Products(this.authToken, this._items);

  //var _showFavoritesOnly = false;
  List<Product> get items {
    // if (_showFavoritesOnly) {
    //   return _items.where((prodItem) => prodItem.isFavorite).toList();
    // }
    return [..._items];
  }

  List<Product> get favoriteItems {
    return _items.where((prodItem) => prodItem.isFavorite).toList();
  }

但是我这里的URL地址末尾有这个错误:

var url = Uri.parse(
        'https://flutter-update-ced0c-default-rtdb.europe-west1.firebasedatabase.app/products/$id.json?auth=$authToken');

这是我的代码:

authToken 的错误是未定义名称“authToken”。
尝试将名称更正为已定义的名称,或定义名称。

import 'dart:convert';

import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;
import 'package:my_shop/providers/products.dart';

class Product with ChangeNotifier {
  final String id;
  final String title;
  final String description;
  final double price;
  final String imageUrl;
  bool isFavorite;

  Product({
    required this.id,
    required this.title,
    required this.description,
    required this.price,
    required this.imageUrl,
    this.isFavorite = false,
  });

  void _setFavValue(bool newValue) {
    isFavorite = newValue;
    notifyListeners();
  }

  Future<void> toggleFavoritestatus(String token) async {
    final oldstatus = isFavorite;
    isFavorite = !isFavorite;
    notifyListeners();
    var url = Uri.parse(
        'https://flutter-update-ced0c-default-rtdb.europe-west1.firebasedatabase.app/products/$id.json?auth=$authToken');
    try {
      final response = await http.patch(url,
          body: json.encode(
            {'isFavorite': isFavorite},
          ));
      if (response.statusCode >= 400) {
        _setFavValue(oldstatus);
      }
    } catch (error) {
      _setFavValue(oldstatus);
    }
  }
}
flutter dart
1个回答
0
投票

authToken
Products
类的成员,因此您只能从
Products
类的实例访问它。

final products = Products('my_auth_token', []);
print(products.authToken); // result: 'my_auth_token'
© www.soinside.com 2019 - 2024. All rights reserved.