【问题标题】:favorite icon color is green最喜欢的图标颜色是绿色
【发布时间】: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() 函数在哪里?该功能可能存在一些问题。请分享。此外,我能够显示我想要的确切颜色,并且我的颜色工作正常,但我已经删除了提供程序包。
  • 我添加了,请查看

标签: flutter flutter-layout


【解决方案1】:

您好,我认为问题在于您将颜色设置为 IconButton 而不是 Icon。试试这个

 Icon(
        product.isFavoriate ? Icons.favorite : Icons.favorite_border,
        color: Theme.of(context).accentColor, //here is where I set the accent color
      ),

【讨论】:

  • 这没有意义。即使在那之后,它仍然有效。
  • 有道理。您需要设置图标颜色而不是按钮颜色。无论如何,我很高兴现在它的工作。祝你有美好的一天,快乐的编码
  • 在图标或图标按钮中使用它都是一样的,直到您有其他不同的计划
【解决方案2】:

这段代码似乎对我有用。也许这会有所帮助

import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'MyShop',
      theme: ThemeData(
        primarySwatch: Colors.purple,
        accentColor: Colors.pink,
        fontFamily: 'Lato',
      ),
      home: ProductItem(),
    );
  }
}

class ProductItem extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: IconButton(
          icon: Icon(
            Icons.favorite,
          ),
          color: Theme.of(context)
              .accentColor, //here is where I set the accent color
          onPressed: () {
            print("hello");
          },
        ),
      ),
    );
  }
}

【讨论】:

    【解决方案3】:

    试试color: Theme.of(context).colorScheme.secondary;

    另外,您可以为图标本身设置颜色值,但这不是必需的。

    IconButton(
             icon: Icon(Icons.favorite, color: Theme.of(context).colorScheme.secondary,),
             color: Theme.of(context).colorScheme.secondary,
            ),
    

    【讨论】:

      猜你喜欢
      • 2021-04-01
      • 2011-10-28
      • 2018-05-31
      • 2020-06-10
      • 2018-04-28
      • 1970-01-01
      • 2021-05-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多