@@ -5,6 +5,7 @@ import 'package:media_kit/media_kit.dart';
55import 'package:watch_it/watch_it.dart' ;
66import 'package:yaru/yaru.dart' ;
77
8+ import '../../common/view/build_context_x.dart' ;
89import '../../common/view/theme.dart' ;
910import '../../common/view/ui_constants.dart' ;
1011import '../../extensions/media_x.dart' ;
@@ -23,21 +24,26 @@ class RadioBrowser extends StatefulWidget {
2324 State <RadioBrowser > createState () => _RadioBrowserState ();
2425}
2526
27+ final _searchDraft = ValueNotifier ('' );
28+
2629class _RadioBrowserState extends State <RadioBrowser > with PlayerControlMixin {
2730 late Future <List <Media >> _future;
28- final TextEditingController _searchController = TextEditingController ();
31+ final TextEditingController _searchController = TextEditingController (
32+ text: _searchDraft.value,
33+ );
2934 Timer ? _debounce;
3035
3136 @override
3237 void initState () {
3338 super .initState ();
34- _future = _loadMedia ();
39+ _future = _loadMedia (name : _searchController.text );
3540 }
3641
3742 @override
3843 void dispose () {
3944 _searchController.dispose ();
4045 _debounce? .cancel ();
46+ _searchDraft.value = _searchController.text;
4147 super .dispose ();
4248 }
4349
@@ -114,6 +120,15 @@ class _RadioBrowserState extends State<RadioBrowser> with PlayerControlMixin {
114120 return const Center (child: CircularProgressIndicator ());
115121 }
116122
123+ if (snapshot.data! .isEmpty) {
124+ return Center (
125+ child: Text (
126+ context.l10n.nothingFound,
127+ style: context.textTheme.bodyLarge,
128+ ),
129+ );
130+ }
131+
117132 return ListView .builder (
118133 itemBuilder: (context, index) {
119134 final media = snapshot.data! [index];
0 commit comments