【发布时间】:2021-07-15 06:07:24
【问题描述】:
我正在开发一个颤振商店应用程序。我的问题看起来很简单,但是我被卡住了,找不到解决方案。 我在网格视图中为每个产品设置了一个最喜欢的图标,我在主类中配置了主题的强调色,然后在产品项目类中设置图标的颜色。但是,最喜欢的图标颜色显示为绿色,而不是我配置的强调色。
主类:
import 'package:flutter/material.dart';
import 'package:shopping_app/providers/products.dart';
import 'package:shopping_app/screens/product_details_screen.dart';
import 'package:shopping_app/screens/products_overview_screen.dart';
import 'package:provider/provider.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return ChangeNotifierProvider(
create: (context) => Products(),
child: MaterialApp(
title: 'MyShop',
theme: ThemeData(
primarySwatch: Colors.purple,
accentColor: Colors.deepOrange,
fontFamily: 'Lato',
),
home: ProductsOverviewScreen(),
routes: {
ProductDetailsScreen.routeName: (context) => ProductDetailsScreen(),
},
),
);
}
}
这是配置此图标的产品项目类:
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:shopping_app/providers/product.dart';
import 'package:shopping_app/screens/product_details_screen.dart';
class ProductItem extends StatelessWidget {
@override
Widget build(BuildContext context) {
final product = Provider.of<Product>(context, listen: false);
return ClipRRect(
borderRadius: BorderRadius.circular(10),
child: GridTile(
child: GestureDetector(
onTap: () {
Navigator.of(context).pushNamed(
ProductDetailsScreen.routeName,
arguments: product.id,
);
},
child: Image.network(
product.imageURL,
fit: BoxFit.cover,
),
),
footer: GridTileBar(
backgroundColor: Colors.black87,
leading: Consumer<Product>(
builder: (context, product, _) => IconButton(
icon: Icon(
product.isFavoriate ? Icons.favorite : Icons.favorite_border,
),
color: Theme.of(context).accentColor, //here is where I set the accent color
onPressed: () {
product.toggleFavoriateStatus();
},
),
),
),
),
);
}
}
这是我的切换功能:
void toggleFavoriateStatus() {
isFavoriate = !isFavoriate;
notifyListeners();
}
【问题讨论】:
-
你的 togglefavouriteStatus() 函数在哪里?该功能可能存在一些问题。请分享。此外,我能够显示我想要的确切颜色,并且我的颜色工作正常,但我已经删除了提供程序包。
-
我添加了,请查看