我在 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);
}
}
}
authToken
是 Products
类的成员,因此您只能从 Products
类的实例访问它。
final products = Products('my_auth_token', []);
print(products.authToken); // result: 'my_auth_token'