I have a page where I am fetching data from a server using a recipeId. In that page, I use the complete_model (that contains all data of the model).
But, while navigating to the page, I already have access to a slim_model(contains only id, title, image).
How to make use of the slim_model to show title and image and then populate the rest?
full_view.dart:
class FullView extends StatefulWidget {
final String id;
const FullView({Key? key, required this.id}) : super(key: key);
@override
_FullViewState createState() => _FullViewState();
}
class _FullViewState extends State<FullView> {
late Future<FullDataModel> future;
@override
void initState() {
future = Repository().getModel(widget.id);
super.initState();
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: FutureBuilder<FullDataModel>(
future: future,
builder: (context, snapshot) {
switch (snapshot.connectionState) {
case ConnectionState.waiting:
return const Center(
child: CircularProgressIndicator(
valueColor:
AlwaysStoppedAnimation<Color>(ColorConstants.accent1),
),
);
default:
if (snapshot.hasError || snapshot.data == null) {
return const Center(
child: Text(
'Something went wrong, we are working on fixing it!',
),
);
} else {
final data = snapshot.data!;
return _body(data, context);
}
}
},
),
);
}
}
Navigating to full_view.dart,
Navigator.push(
context,
MaterialPageRoute(
builder: (context) {
return FullView(
id: slimData.id,
);
},
fullscreenDialog: true));
Here, I already have id, title & image data in slimData, I want to show that while rest of data loads in full_view.dart
The problem is that, I have to use deep_linking or sometimes I don't have slimData => I only have the id.
So, when I have slimData, I want to use that to show title and image while rest of data loads using id.
If I don't have slimData, I just want to load everything using id.
CodePudding user response:
So, when I have slimData, I want to use that to show title and image while rest of data loads using id.
So... just do it? Where you currently have a CircularProgressIndicator, insert a conditional and if you have SlimData, show that instead of the progress indicator.
