Skip to content

Instantly share code, notes, and snippets.

@CoderJava
Created April 22, 2019 05:12
Show Gist options
  • Select an option

  • Save CoderJava/21a626ac2ce6b3a6028b8ea0124bebc5 to your computer and use it in GitHub Desktop.

Select an option

Save CoderJava/21a626ac2ce6b3a6028b8ea0124bebc5 to your computer and use it in GitHub Desktop.
import 'package:flutter/material.dart';
import 'package:meals_catalogue/src/domain/food/food.dart';
import 'package:meals_catalogue/src/services/FoodServices.dart';
import 'package:meals_catalogue/src/ui/detail/detail_screen.dart';
import 'package:http/http.dart' as http;
class DessertScreen extends StatefulWidget {
@override
_DessertScreenState createState() => _DessertScreenState();
}
class _DessertScreenState extends State<DessertScreen> {
final List<Food> _foods = List();
final FoodService _foodService = FoodService();
Future<Food> futureFood;
@override
void initState() {
futureFood = _foodService.getDessert(http.Client());
super.initState();
}
@override
Widget build(BuildContext context) {
return SafeArea(
child: FutureBuilder(
initialData: _foods,
future: futureFood,
builder: (context, snapshot) {
if (snapshot.hasError) {
Scaffold.of(context).showSnackBar(
SnackBar(
content: Text(snapshot.error.toString()),
),
);
return Center(
child: Text("Something wrong"),
);
} else if (snapshot.connectionState == ConnectionState.done) {
Food food = snapshot.data as Food;
return GridView.builder(
key: Key("grid view dessert"),
itemCount: food.meals.length,
itemBuilder: (BuildContext context, int index) {
Meal meal = food.meals[index];
return GestureDetector(
onTap: () {
Scaffold.of(context).showSnackBar(SnackBar(
content: Text(
meal.strMeal,
),
action: SnackBarAction(
key: Key("snack bar action dessert " + meal.idMeal),
label: "Open Detail",
onPressed: () {
Navigator.push(context, MaterialPageRoute(
builder: (context) {
return DetailScreen(
idMeal: meal.idMeal,
strMealThumb: meal.strMealThumb,
strMeal: meal.strMeal,
type: "dessert",
);
},
));
},
),
));
},
child: Card(
key: Key("card dessert " + meal.idMeal),
child: Stack(
children: <Widget>[
Hero(
tag: meal.idMeal,
child: Image.network(
meal.strMealThumb,
fit: BoxFit.cover,
),
),
Align(
alignment: Alignment.bottomCenter,
child: Container(
color: Colors.white,
width: double.infinity,
height: 40.0,
child: Center(
child: Padding(
padding: const EdgeInsets.only(
top: 4.0,
right: 12.0,
bottom: 8.0,
left: 12.0,
),
child: Text(
meal.strMeal,
textAlign: TextAlign.center,
maxLines: 2,
softWrap: true,
),
),
),
),
),
],
),
),
);
},
gridDelegate:
SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 2),
);
} else {
return Center(
child: CircularProgressIndicator(key: Key("circular progress indicator dessert")),
);
}
},
),
);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment