#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. Нет, это не замедляет работу моего приложения. Итак, все в порядке? Спасибо