Анимированный конструктор Flutter с поставщиком для отображения изображения с URL-адреса

#flutter #flutter-provider

#flutter #flutter-provider

Вопрос:

Я хочу показать SVG-изображение с URL-адреса, и я использую пакет flutter_svg для отображения изображения. Я предоставляю URL-адрес изображения с помощью провайдера, и я хочу, чтобы изображение меняло цвет при каждом прокручивании пользователем вниз или вверх (изображение отображается на панели приложений).

Вот фрагменты моего кода

HomeAppbar.dart

 class HomeAppBar extends StatefulWidget{
  AnimationController controller;

  HomeAppBar({@required this.controller});

  @override
  _HomeAppBarState createState() => _HomeAppBarState();
}

class _HomeAppBarState extends State<HomeAppBar> {

  Animation appBarColorTween, iconColorTween, logoColorTween;

  @override
  void initState() {
    appBarColorTween = ColorTween(begin: Colors.transparent, end: Colors.white)
        .animate(widget.controller);
    logoColorTween = ColorTween(begin: Colors.white, end: KaskuColor.primary)
        .animate(widget.controller);
    iconColorTween = ColorTween(begin: Colors.white, end: Color(0xFFCACCCF))
        .animate(widget.controller);

    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return AnimatedBuilder(
      builder: (BuildContext context, Widget child) {
        return Container(
          padding: EdgeInsets.only(top: 24, left: 21, right: 21),
          width: double.infinity,
          height: 80,
          color: appBarColorTween.value,
          child: Row(
            crossAxisAlignment: CrossAxisAlignment.center,
            mainAxisAlignment: MainAxisAlignment.spaceBetween,
            children: <Widget>[
              Consumer(
                builder: (BuildContext context, GeneralConfigProvider provider, Widget child) {
                  print('Print this');
                  return SvgPicture.network(
                    provider.logoDefault,
                    height: 21,
                    color: logoColorTween.value,
                  );
                }
              ),

              IconButton(
                icon: IconBadge(
                  icon: Icon(
                    Icons.shopping_cart,
                    color: iconColorTween.value,
                  ),
                  count: 0,
                ), onPressed: () {},
              )
            ],
          ),
        );
      },
      animation: widget.controller,
    );
  }
}

  

GeneralConfigProvider.dart

 class GeneralConfigProvider with ChangeNotifier{

  Color _primaryColor;
  Color _accentColor;
  String _logoDefault = "image url";

  init(){
    _getColor();
  }

  _getColor()async{

    String stringColor = '#be504f';
    String stringColor2 = '#65bbe6';

    _primaryColor = hexToColor(stringColor);
    _accentColor = hexToColor(stringColor2);
    notifyListeners();
  }

  Color get primaryColor => _primaryColor ?? Color(0xFFFF00FF);
  Color get accentColor => _accentColor ?? Color(0xFFFF00FF);

  String get logoDefault => _logoDefau<
}
  

Проблема в том, что каждый раз, когда пользователь прокручивает вниз или прокручивает вверх "print this" , часть всегда печатается слишком много. Это нормально? Или что-то не так с моим кодом? или есть лучший способ?

Спасибо!

Комментарии:

1. все в порядке, это замедляет работу вашего приложения?

2. Я запускаю симулятор IOS. Нет, это не замедляет работу моего приложения. Итак, все в порядке? Спасибо