Masalah yang kamu alami:
"Invalid use of a private type in a public API"
Terjadi ketika kamu membuat kelas publik (SplashPage
) tapi menggunakan tipe private (yang diawali underscore, _SplashPageState
) dalam tanda tangan publik (public API), yaitu saat kamu menulis:
class SplashPage extends StatefulWidget {
const SplashPage({super.key});
@override
_SplashPageState createState() => _SplashPageState(); // ← Ini penyebab warning
}
Penjelasan
Di Dart:
-
Nama kelas yang diawali dengan
_
(underscore) bersifat private, alias hanya bisa diakses dalam satu file (library) saja. -
Tapi saat kamu menggunakannya dalam sesuatu yang public (seperti
createState()
milikSplashPage
yang adalah class public), maka itu dianggap "membocorkan" tipe private ke API public — linting akan memperingatkanmu.
Solusi
1. Jadikan state class-nya public juga (hapus _
):
class SplashPage extends StatefulWidget {
const SplashPage({super.key});
@override
SplashPageState createState() => SplashPageState();
}
class SplashPageState extends State<SplashPage> {
// ...
}
2. Atau jadikan widget-nya private juga (tidak disarankan kalau kamu pakai di file lain):
class _SplashPage extends StatefulWidget {
const _SplashPage({super.key});
@override
_SplashPageState createState() => _SplashPageState();
}
Namun umumnya yang benar dan paling umum adalah membuat State class-nya public jika Widget-nya public juga.
Catatan
-
Ini bukan error runtime, hanya warning dari Dart analyzer.
-
Kalau kamu tetap ingin
_SplashPageState
bersifat private dan tidak dipakai di luar file, kamu boleh mengabaikannya untuk project kecil. -
Tapi untuk production/best practice: hindari membocorkan tipe private ke API public.
0 Comments:
Post a Comment