Bagaimana mengubah warna CircularProgressIndicator

126

Bagaimana cara mengubah warna CircularProgressIndicator?

Nilai warna adalah contoh dari Animation<Color>, tetapi saya berharap ada cara yang lebih sederhana untuk mengubah warna tanpa masalah animasi.

Arash
sumber

Jawaban:

260

Ini berhasil untuk saya:

valueColor: new AlwaysStoppedAnimation<Color>(Colors.blue),
Mito
sumber
yang satu ini membantu untuk indikator kemajuan linier juga terima kasih banyak
Rajesh Jr.
Terima kasih! Sejak kapan AlwaysStoppedAnimation ada?
Rebar
Di Flutter 1.20.0.7.2.pre yang saya dapatkanThe argument type 'AlwaysStoppedAnimation<Color>' can't be assigned to the parameter type 'Animation<Color>'
Zane Campbell
71

Tiga cara untuk menyelesaikan masalah Anda

1) Menggunakan valueColorproperti

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

2) Setel accentColordi MaterialAppwidget utama Anda . Ini adalah cara terbaik karena Anda tidak ingin selalu menyetel warna saat Anda menggunakan CircularProgressIndicatorwidget

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

3) Menggunakan ThemeWidget

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

accentColordapat digunakan untuk warna latar depan Widget. Ini mengubah warna widget latar depan termasuk circularprogressbarAnda dapat menggunakan seperti ini:

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

Tema adalah widget yang dapat Anda sisipkan di mana saja di pohon widget Anda. Ini mengganti tema saat ini dengan nilai-nilai khusus. Coba ini:

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

referensi: https://gitter.im/flutter/flutter?at=5a84cf9218f388e626a51c2d

Akshay Nandwana
sumber
3
valueColor:new AlwaysStoppedAnimation<Color>(Colors.yellow),
Musfiq Shanta
sumber
2

Secara default, ini mewarisi accentColor dari Themedata

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

Anda dapat mengubah properti accentColor ini dengan warna baru Anda. Cara lain adalah menggunakan dengan ThemeData standar seperti ini

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

Atau Anda bisa langsung mengubah properti warna ini di CircularProgressIndicator seperti yang ditunjukkan di bawah ini

CircularProgressIndicator(
         valueColor: AlwaysStoppedAnimation<Color>(Colors.red),
                    ),
Maddu Swaroop
sumber
2

Dalam main.dartmengatur tema accentColor, CircularProgressIndicatorakan menggunakan warna itu

void main() => runApp(new MaterialApp(
  theme: ThemeData(primaryColor: Colors.red, **accentColor:  Colors.yellowAccent**),
  debugShowCheckedModeBanner: false,
  home: SplashPage()
));
Pepe Valdivia
sumber
Ini juga akan mempengaruhi warna sistem lainnya, yang jelas bukan yang diminta.
Alex Semeniuk
0

untuk set warna sigle,

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

untuk perubahan / set multi warna.

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> with TickerProviderStateMixin {
  AnimationController animationController;
  @override
  void dispose() {
// TODO: implement dispose
    super.dispose();
    animationController.dispose();
  }
  @override
  void initState() {
    super.initState();
    animationController =
        AnimationController(duration: new Duration(seconds: 2), vsync: this);
    animationController.repeat();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("Color Change CircularProgressIndicator"),
      ),
      body:  Center(
        child: CircularProgressIndicator(
          valueColor: animationController
              .drive(ColorTween(begin: Colors.brown, end: Colors.red)),
        ),
      ),
    );
  }
}
shirsh shukla
sumber
0

Gunakan seperti ini --->

CircularProgressIndicator (valueColor: AlwaysStoppedAnimation (Colors.grey [500]),)),

Rasel Khan
sumber