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