38 lines
1.3 KiB
Dart
38 lines
1.3 KiB
Dart
import 'package:didvan/models/enums.dart';
|
|
import 'package:didvan/views/home/home_state.dart';
|
|
import 'package:didvan/views/home/search/widgets/search_result_item.dart';
|
|
import 'package:didvan/views/widgets/state_handlers/empty_list.dart';
|
|
import 'package:didvan/views/widgets/state_handlers/state_handler.dart';
|
|
import 'package:flutter/material.dart';
|
|
import 'package:provider/provider.dart';
|
|
|
|
class SearchPage extends StatelessWidget {
|
|
const SearchPage({super.key});
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
final state = context.watch<HomeState>();
|
|
return SizedBox(
|
|
height: MediaQuery.of(context).size.height,
|
|
width: MediaQuery.of(context).size.width,
|
|
child: StateHandler<HomeState>(
|
|
state: state,
|
|
enableEmptyState:
|
|
state.appState == AppState.idle && state.results.isEmpty,
|
|
emptyState: const EmptyList(),
|
|
onRetry: () => state.searchAll(page: state.page),
|
|
builder: (context, state) => ListView.builder(
|
|
padding: const EdgeInsets.all(16),
|
|
itemBuilder: (context, index) => Padding(
|
|
padding: const EdgeInsets.only(bottom: 16),
|
|
child: SearchResultItem(
|
|
item: state.results[index],
|
|
),
|
|
),
|
|
itemCount: state.results.length,
|
|
),
|
|
),
|
|
);
|
|
}
|
|
}
|