Image 颤振与振动;共享首选项:如何将网络映像保存到本地内存?

Image 颤振与振动;共享首选项:如何将网络映像保存到本地内存?,image,flutter,dart,caching,sharedpreferences,Image,Flutter,Dart,Caching,Sharedpreferences,要使用共享首选项包将网络映像保存到本地内存中 让我们使用下图: 链接: 我如何使用共享_首选项来实现这一点 我期待着收到你的来信。谢谢。对于以下方法,您的图像可能太大,因此我使用的是一个较小的占位符图像,每次调用它时都会返回一个随机图像。查看以下代码,首先检查图像是否保存在共享首选项中,如果未保存,代码将下载图像,将图像转换为base64字符串,并将图像base64字符串保存到共享首选项中 import 'dart:async'; import 'dart:convert'; import 'd

要使用共享首选项包将网络映像保存到本地内存中

让我们使用下图:

链接:

我如何使用共享_首选项来实现这一点


我期待着收到你的来信。谢谢。

对于以下方法,您的图像可能太大,因此我使用的是一个较小的占位符图像,每次调用它时都会返回一个随机图像。查看以下代码,首先检查图像是否保存在共享首选项中,如果未保存,代码将下载图像,将图像转换为base64字符串,并将图像base64字符串保存到共享首选项中

import 'dart:async';
import 'dart:convert';
import 'dart:typed_data';
import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;
import 'package:shared_preferences/shared_preferences.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      theme: ThemeData.dark(),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  State createState() => MyHomePageState();
}

class MyHomePageState extends State<MyHomePage> {
  String _base64;
  Future getImage;

  Future<String> _getImage() async {
    String base64;
    final SharedPreferences prefs = await SharedPreferences.getInstance();
    base64 = prefs.getString("base64Image");
    if (base64 == null) {
      final http.Response response = await http.get(
        'https://picsum.photos/200',
      );
      base64 = base64Encode(response.bodyBytes);
      prefs.setString("base64Image", base64);
    }
    return base64;
  }

  @override
  void initState() {
    super.initState();
    getImage = _getImage();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('Example App')),
      body: FutureBuilder<String>(
        future: getImage,
        builder: (context, snapshot) {
          if (snapshot.hasData) {
            _base64 = snapshot.data;
            final Uint8List bytes = base64Decode(_base64);
            return ListTile(
              leading: Image.memory(bytes),
              title: Text(_base64),
            );
          }
          return const Center(child: CircularProgressIndicator());
        },
      ),
    );
  }
}
导入'dart:async';
导入“dart:convert”;
导入“dart:键入的_数据”;
进口“包装:颤振/材料.省道”;
将“package:http/http.dart”导入为http;
导入“package:shared_preferences/shared_preferences.dart”;
void main(){
runApp(MyApp());
}
类MyApp扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回材料PP(
主题:ThemeData.dark(),
主页:MyHomePage(),
);
}
}
类MyHomePage扩展StatefulWidget{
@凌驾
State createState()=>MyHomePageState();
}
类MyHomePageState扩展了状态{
字符串_base64;
未来形象;
Future\u getImage()异步{
字符串base64;
final SharedReferences prefs=等待SharedReferences.getInstance();
base64=prefs.getString(“base64Image”);
if(base64==null){
final http.Response Response=wait http.get(
'https://picsum.photos/200',
);
base64=base64Encode(response.bodyBytes);
prefs.setString(“base64Image”,base64);
}
返回base64;
}
@凌驾
void initState(){
super.initState();
getImage=_getImage();
}
@凌驾
小部件构建(构建上下文){
返回脚手架(
appBar:appBar(标题:常量文本(“示例应用”),
正文:未来建设者(
未来:getImage,
生成器:(上下文,快照){
if(snapshot.hasData){
_base64=snapshot.data;
最终Uint8List字节=base64解码(_base64);
返回列表块(
前导:映像内存(字节),
标题:文本(_base64),
);
}
返回常量中心(子项:CircularProgressIndicator());
},
),
);
}
}