sdk-for-flutter icon indicating copy to clipboard operation
sdk-for-flutter copied to clipboard

🚀 Feature: Method to Generate File URL

Open stnguyen90 opened this issue 2 years ago • 2 comments

🔖 Feature description

Add storage.getFileDownloadURL(), storage.getFilePreviewURL(), and storage.getFileViewURL() methods.

🎤 Pitch

There are instances where it would be helpful to get a URL rather than the file as bytes such as when used by Image.network() or on Flutter Web.

👀 Have you spent some time to check if this issue has been raised before?

  • [X] I checked and didn't find similar issue

🏢 Have you read the Code of Conduct?

stnguyen90 avatar Jul 15 '22 23:07 stnguyen90

Don't is necessary only a method to get URL?

silvinhodev avatar Jul 21 '22 11:07 silvinhodev

How I have mentioned in discord, I forked this project now, i have updated the method 'getFileView' and make fews changes to obtain a url in same method. So then, storage.getFileView(), storage.getFilePreview() and storage.getFileDownload() can obtain a URL and show a Image with widget Image.network().

And bonus, a method to get a URL passing bucketId and fileId outside methods above.

Example:

FutureBuilder(
  future: Services.instance.storage.getFileView(
    bucketId: '62d5a2b48e1af6936615',
    fileId: '62d5a2cdf08aa4f45e6e',
    getURL: true, //Set getURL to [true] to obtain a URL Link,
                  //if set to [false] or remove it obtain a [Uint8List].
  ),
  builder: (context, snapshot) {
    if (!snapshot.hasData) {
      return const Center(
        child: CircularProgressIndicator(),
      );
    }
    return Column(
      children: [
        const Text(
          'Obtain a url with getURL',
          style: TextStyle(fontWeight: FontWeight.bold),
        ),
        const SizedBox(height: 10),
        Text(
          '${snapshot.data}',
        ),
        const SizedBox(height: 10),
        const Text(
          'Obtain a url with getURL and show'
          ' a image using Image.network()',
          style: TextStyle(fontWeight: FontWeight.bold),
        ),
        const SizedBox(height: 10),
        Image.network('${snapshot.data}'),
      ],
    );
  },
),

Captura de Tela 2022-07-21 às 09 56 36 Captura de Tela 2022-07-21 às 09 56 56

silvinhodev avatar Jul 21 '22 13:07 silvinhodev