单击按钮时显示网络图像
Display a network image when clicking a button
我对移动开发和 Flutter 还很陌生,但这似乎是一项值得尝试的好技术。所以现在,我有一个 API,它会在被询问时发送照片和文本,但每次你询问时,它都是不同的。所以当我在我的应用程序中显示这些文本时它工作正常,当我按下预期的按钮时它再次发出请求,所以我得到一个新的文本短语。但是当我想获取图像时,它第一次工作,然后似乎没有再次完成请求,图像保持不变。当我按下按钮时,我怎样才能再次发出请求?随时提出您需要的每个问题,我将小部件的代码粘贴在下面
import 'package:flutter/material.dart';
class ImageDialog extends StatelessWidget {
@override
@override
Widget build(BuildContext context) {
return Dialog(
child: FutureBuilder(
future: _loadImage(),
builder: (BuildContext context, AsyncSnapshot<Image> image) {
if (image.hasData) {
return image.data; // image is ready
} else {
return Text("No photo available"); // placeholder
}
},
));
}
Future<Image> _loadImage() async {
return Image.network(
'http://192.168.1.19:5000/photo',
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization':
'Bearer token',
},
);
}
}
Thanks in advance :)
选项 1 - 为您的请求添加一个随机参数:
Future<Image> _loadImage() async {
var nowParam = DateFormat('yyyyddMMHHmm').format(DateTime.now());
return Image.network(
'http://192.168.1.19:5000/photo#' + nowParam,
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization':
'Bearer token',
},
);
}
选项 2 - 向您的图像添加一个随机键并在单击按钮时清除缓存:
Future<Image> _loadImage() async {
return Image.network(
'http://192.168.1.19:5000/photo',
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization':
'Bearer token',
},
key: ValueKey(new Random().nextInt(100)),),
);
}
...
import 'package:flutter/services.dart';
void buttonClick() {
imageCache.clear();
imageCache.clearLiveImages();
}
我对移动开发和 Flutter 还很陌生,但这似乎是一项值得尝试的好技术。所以现在,我有一个 API,它会在被询问时发送照片和文本,但每次你询问时,它都是不同的。所以当我在我的应用程序中显示这些文本时它工作正常,当我按下预期的按钮时它再次发出请求,所以我得到一个新的文本短语。但是当我想获取图像时,它第一次工作,然后似乎没有再次完成请求,图像保持不变。当我按下按钮时,我怎样才能再次发出请求?随时提出您需要的每个问题,我将小部件的代码粘贴在下面
import 'package:flutter/material.dart';
class ImageDialog extends StatelessWidget {
@override
@override
Widget build(BuildContext context) {
return Dialog(
child: FutureBuilder(
future: _loadImage(),
builder: (BuildContext context, AsyncSnapshot<Image> image) {
if (image.hasData) {
return image.data; // image is ready
} else {
return Text("No photo available"); // placeholder
}
},
));
}
Future<Image> _loadImage() async {
return Image.network(
'http://192.168.1.19:5000/photo',
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization':
'Bearer token',
},
);
}
}
Thanks in advance :)
选项 1 - 为您的请求添加一个随机参数:
Future<Image> _loadImage() async {
var nowParam = DateFormat('yyyyddMMHHmm').format(DateTime.now());
return Image.network(
'http://192.168.1.19:5000/photo#' + nowParam,
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization':
'Bearer token',
},
);
}
选项 2 - 向您的图像添加一个随机键并在单击按钮时清除缓存:
Future<Image> _loadImage() async {
return Image.network(
'http://192.168.1.19:5000/photo',
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization':
'Bearer token',
},
key: ValueKey(new Random().nextInt(100)),),
);
}
...
import 'package:flutter/services.dart';
void buttonClick() {
imageCache.clear();
imageCache.clearLiveImages();
}