Як змінити колір CircularProgressIndicator


110

Як я можу змінити колір CircularProgressIndicator?

Значення кольору є екземпляром Animation<Color>, але я сподіваюся, що є простіший спосіб змінити колір без проблем з анімацією.

Відповіді:


229

Це працювало для мене:

valueColor: new AlwaysStoppedAnimation<Color>(Colors.blue),

цей теж допоміг лінійному індикатору прогресу - велике спасибі
Раджеш-молодший

Дякую! З якого часу існує AlwaysStoppedAnimation?
Арматура

У Flutter 1.20.0.7.2.pre я отримуюThe argument type 'AlwaysStoppedAnimation<Color>' can't be assigned to the parameter type 'Animation<Color>'
Зейн Кемпбелл

54

Три шляхи вирішення вашої проблеми

1) Використання valueColorвласності

CircularProgressIndicator(
     valueColor: new AlwaysStoppedAnimation<Color>(Colors.blue),
),

2) Встановіть accentColorу своєму головному MaterialAppвіджеті. Це найкращий спосіб, оскільки ви не хочете встановлювати колір весь час, коли ви використовуєте CircularProgressIndicatorвіджет

MaterialApp(
        title: 'My App',
        home: MainPAge(),
        theme: ThemeData(accentColor: Colors.blue),
),

3) Використання Themeвіджета

Theme(
      data: Theme.of(context).copyWith(accentColor: Colors.red),
      child: new CircularProgressIndicator(),
)

15

accentColorможе використовуватися для кольору переднього плану віджетів. Це змінює колір будь-яких віджетів переднього плану, включаючи circularprogressbarВи можете використовувати так:

void main() => runApp(
  MaterialApp(
    title: 'Demo App',
    home: MainClass(),
    theme: ThemeData(accentColor: Colors.black),
  ),
);


2

За замовчуванням він успадковує accentColor від Themedata

  void main() => runApp(new MaterialApp(
  theme: ThemeData(
                 primaryColor: Colors.blue,
                 accentColor:  Colors.blueAccent,
                 //This will be the color for CircularProgressIndicator color
               ),
  home: Homepage()
    ));

Ви можете змінити цю властивість accentColor за допомогою нового кольору. Інший спосіб - використання із заздалегідь визначеними ThemeData, як це

void main() => runApp(new MaterialApp(
  theme: ThemeData.light().copyWith(
                 accentColor:  Colors.blueAccent,
                 //change the color for CircularProgressIndicator color here
               ),
  home: Homepage()
    ));

Або ви можете безпосередньо змінити цю властивість кольору в CircularProgressIndicator, як показано нижче

CircularProgressIndicator(
         valueColor: AlwaysStoppedAnimation<Color>(Colors.red),
                    ),

2

У main.dartнаборі теми accentColor, то CircularProgressIndicatorбуде використовувати цей колір

void main() => runApp(new MaterialApp(
  theme: ThemeData(primaryColor: Colors.red, **accentColor:  Colors.yellowAccent**),
  debugShowCheckedModeBanner: false,
  home: SplashPage()
));

Це також вплине на інші системні кольори, що, очевидно, не те, про що запитували.
Олексій Семенюк

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.