有条件地使用 futurebuilder : Flutter

conditionally use futurebuilder : Flutter

我有一个页面,我正在使用 recipeId 从服务器获取数据。在该页面中,我使用 complete_model(包含模型的所有数据)。

但是,在导航到该页面时,我已经可以访问 slim_model(仅包含 ID、标题、图像)。

如何利用 slim_model 显示 titleimage 然后填充其余部分?

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);
              }
          }
        },
      ),
    );
  }
}

导航至 full_view.dart

 Navigator.push(
              context,
              MaterialPageRoute(
                  builder: (context) {
                    return FullView(
                      id: slimData.id,
                    );
                  },
                  fullscreenDialog: true));

在这里,我已经在 slimData 中有了 id、标题和图像数据,我想展示一下 full_view.dart

中加载的其余数据

问题是,我必须使用 deep_linking 或者有时我没有 slimData => 我只有 id.

所以,当我有 slimData 时,我想用它来显示标题和图像,而其余数据使用 id 加载。

如果我没有 slimData,我只想使用 id.

加载所有内容

So, when I have slimData, I want to use that to show title and image while rest of data loads using id.

所以...就去做吧?在您当前有 CircularProgressIndicator 的地方,插入一个条件,如果您 SlimData,则显示它而不是进度指示器。