Widget build()

in experimental/desktop_photo_search/lib/main.dart [66:152]


  Widget build(BuildContext context) {
    final photoSearchModel = Provider.of<PhotoSearchModel>(context);
    menubar.setApplicationMenu([
      menubar.Submenu(label: 'Search', children: [
        menubar.MenuItem(
          label: 'Search ...',
          onClicked: () {
            showDialog<void>(
              context: context,
              builder: (context) =>
                  PhotoSearchDialog(callback: photoSearchModel.addSearch),
            );
          },
        ),
      ]),
      menubar.Submenu(label: 'About', children: [
        menubar.MenuItem(
          label: 'About ...',
          onClicked: () {
            showDialog<void>(
              context: context,
              builder: (context) => const PolicyDialog(),
            );
          },
        ),
      ])
    ]);

    return Scaffold(
      appBar: AppBar(
        title: Text(title),
      ),
      body: photoSearchModel.entries.isNotEmpty
          ? Split(
              axis: Axis.horizontal,
              initialFirstFraction: 0.4,
              firstChild: Scrollbar(
                child: SingleChildScrollView(
                  child: TreeView(
                    nodes: photoSearchModel.entries
                        .map(_buildSearchEntry)
                        .toList(),
                    indent: 0,
                  ),
                ),
              ),
              secondChild: Center(
                child: photoSearchModel.selectedPhoto != null
                    ? PhotoDetails(
                        photo: photoSearchModel.selectedPhoto!,
                        onPhotoSave: (photo) async {
                          final path = await getSavePath(
                            suggestedName: '${photo.id}.jpg',
                            acceptedTypeGroups: [
                              XTypeGroup(
                                label: 'JPG',
                                extensions: ['jpg'],
                                mimeTypes: ['image/jpeg'],
                              ),
                            ],
                          );
                          if (path != null) {
                            final fileData =
                                await photoSearchModel.download(photo: photo);
                            final photoFile = XFile.fromData(fileData,
                                mimeType: 'image/jpeg');
                            await photoFile.saveTo(path);
                          }
                        },
                      )
                    : Container(),
              ),
            )
          : const Center(
              child: Text('Search for Photos using the Fab button'),
            ),
      floatingActionButton: FloatingActionButton(
        onPressed: () => showDialog<void>(
          context: context,
          builder: (context) =>
              PhotoSearchDialog(callback: photoSearchModel.addSearch),
        ),
        tooltip: 'Search for a photo',
        child: const Icon(Icons.search),
      ),
    );
  }