Invalid use of a private type in a public API. Try making the private type public, or making the API that uses the private type also be private.dartlibrary_private_types_in_public_api

 

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() milik SplashPage 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