Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- part of 'pages.dart';
- class RestaurantPage extends StatelessWidget {
- static const routeName = '/restaurant_page';
- Widget _buildListRestaurant(BuildContext context) {
- Future<String> _loadAsset(BuildContext context) async {
- return await DefaultAssetBundle.of(context)
- .loadString('assets/local_restaurant.json');
- }
- Future<List<RestaurantItem>> _loadRestaurants(BuildContext context) async {
- String jsonString = await _loadAsset(context);
- return parseJson(jsonString).restaurants;
- }
- return FutureBuilder(
- future: _loadRestaurants(context),
- builder: (context, snapshot) {
- final List<RestaurantItem> restaurants =
- snapshot.data as List<RestaurantItem>;
- if (restaurants.isEmpty || (restaurants.length == 0)) {
- return _buildNullRestaurant(context);
- } else {
- return _buildListRecomended(context, restaurants);
- }
- },
- );
- }
- @override
- Widget build(BuildContext context) {
- return CustomScaffold(body: _buildListRestaurant(context));
- }
- Widget _buildListRecomended(
- BuildContext context, List<RestaurantItem> restaurants) {
- return Padding(
- padding: EdgeInsets.only(top: 85, bottom: 12),
- child: ListView.builder(
- itemBuilder: (context, index) {
- final recomendedRestaurant = restaurants[index];
- return Padding(
- padding: EdgeInsets.only(left: 16, right: 16),
- child: GestureDetector(
- onTap: () {
- Navigator.pushNamed(context, DetailRestaurant.routeName,
- arguments: recomendedRestaurant);
- },
- child: RestaurantListItem(restaurant: recomendedRestaurant)),
- );
- },
- itemCount: restaurants.length,
- ),
- );
- }
- Widget _buildNullRestaurant(BuildContext context) {
- return Stack(
- children: [
- Center(
- child: Lottie.asset('assets/nodata.json',
- width: 250, height: 250, fit: BoxFit.fill))
- ],
- );
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement