Pada flutter versi 3.0 terbaru, terdapat beberapa perubahan pada widget button. Beberapa button tersebut telah deprecated dan akan digantikan dengan yang baru, sehingga pada akhirnya akan dihapus. Tujuan utamanya adalah membuat tombol lebih fleksibel dan mudah untuk di konfigurasi atau kustomisasi melalui parameter constructor atau tema (themes).
FlatButton, RaisedButton dan OutlineButton telah digantikan oleh TextButton, ElevatedButton, dan OutlinedButton. Setiap masing-masing tombol baru tersebut memiliki tema sendiri-sendiri. Yaitu, TextButtonTheme, ElevatedButtonTheme, dan OutlinedButtonTheme. Sedangkan, tema bawaan seperti class ButtonTheme sudah tidak digunakan kembali.
Style dari tombol ditentukan oleh objek ButtonStyle, bukan dari property maupun parameter dari class button tersebut. Hal ini sama halnya dengan widget Text yang style nya ditentukan pada objek TextStyle. Tema dari tombol baru ini juga dapat dikonfigurasi melalui ButtonStyle. ButtonStyle itu sendiri sebenarnya hanyalah data collection yang berisi kumpulan properti visual yang berdasarkan pada MaterialStateProperty yang nilainya bergantung pada state dari tombol.
ButtonStyle.styleFrom()
Ketika menggunakan ButtonStyle, kita harus mendefinisikan semua properti yang digunakan. Sedangkan, ketika kita ingin membuat semua style secara default atau mengubah style tertentu saja, kita dapat menggunakan ButtonStyle.styleFrom().
Menggunakan method syleFrom() lebih simpel dibandingkan kita menggunakan ButtonStyle. Karena pada dasarnya, method tersebut merupakan construct dari class ButtonStyle yang berisi nilai atau set value yang sederhana, termasuk didalamnya ada color scheme.
Link dokumentasi
https://docs.flutter.dev/release/breaking-changes/buttons