Flutter 颤振状态变化 class\u EventAdminEditState扩展状态{ @凌驾 小部件构建(构建上下文){ 字符串imageURL=widget.ccaDocument['Image']; 最终全局键=全局键(); 最终文本编辑控制器imageURLController=新文本编辑控制器(); imageURLController.text=imageURL; void\u publishEvent()异步{ 打印(imageURL); widget.ccaDocument.reference.updateData({ “名称”:名称, “细节”:细节, “位置”:位置, “RegisterInstructions”:注册说明, “EventTime”:EventTime, “图像”:imageURL } 未来上载映像(BuildContext上下文)异步{ 最终选择器=图像选择器(); final pickedFile=wait picker.getImage(来源:ImageSource.gallery); 设置状态(){ _image=文件(pickedFile.path); }); StorageReference firebaseStorageRef=FirebaseStorage.instance .ref() .child('event_profile/${Path.basename(_image.Path)}}); StorageUploadTask uploadTask=firebaseStorageRef.putFile(_image); var dowurl=await(await uploadTask.onComplete); 设置状态(){ imageURL=dowurl.toString(); });
您好,我可以问一下,为什么即使我隐式调用了setState(),imageURL也没有更改。 我试着打印出来,以确认上传图像中的图像URL是否发生了更改。 上载图像中的ImageURL已更改,但PublisheEvent中的全局ImageURL未更改。 我想做的是改变上传的图像 有人能陪我出去吗 多谢各位Flutter 颤振状态变化 class\u EventAdminEditState扩展状态{ @凌驾 小部件构建(构建上下文){ 字符串imageURL=widget.ccaDocument['Image']; 最终全局键=全局键(); 最终文本编辑控制器imageURLController=新文本编辑控制器(); imageURLController.text=imageURL; void\u publishEvent()异步{ 打印(imageURL); widget.ccaDocument.reference.updateData({ “名称”:名称, “细节”:细节, “位置”:位置, “RegisterInstructions”:注册说明, “EventTime”:EventTime, “图像”:imageURL } 未来上载映像(BuildContext上下文)异步{ 最终选择器=图像选择器(); final pickedFile=wait picker.getImage(来源:ImageSource.gallery); 设置状态(){ _image=文件(pickedFile.path); }); StorageReference firebaseStorageRef=FirebaseStorage.instance .ref() .child('event_profile/${Path.basename(_image.Path)}}); StorageUploadTask uploadTask=firebaseStorageRef.putFile(_image); var dowurl=await(await uploadTask.onComplete); 设置状态(){ imageURL=dowurl.toString(); });,flutter,google-cloud-firestore,Flutter,Google Cloud Firestore,您好,我可以问一下,为什么即使我隐式调用了setState(),imageURL也没有更改。 我试着打印出来,以确认上传图像中的图像URL是否发生了更改。 上载图像中的ImageURL已更改,但PublisheEvent中的全局ImageURL未更改。 我想做的是改变上传的图像 有人能陪我出去吗 多谢各位 class _EventAdminEditState extends State<EventAdminEdit> { @override Widget build(Bui
class _EventAdminEditState extends State<EventAdminEdit> {
@override
Widget build(BuildContext context) {
String imageURL = widget.ccaDocument['Image'];
final GlobalKey<FormState> _key = GlobalKey();
final TextEditingController imageURLController = new TextEditingController();
imageURLController.text = imageURL;
void _publishEvent() async {
print(imageURL);
widget.ccaDocument.reference.updateData({
'Name' : name,
'Details': details,
'Location': location,
'RegisterInstructions': registrationInstructions,
'EventTime': eventTime,
'Image' : imageURL
}
Future uploadImage(BuildContext context) async {
final picker = ImagePicker();
final pickedFile = await picker.getImage(source: ImageSource.gallery);
setState(() {
_image = File(pickedFile.path);
});
StorageReference firebaseStorageRef = FirebaseStorage.instance
.ref()
.child('event_profile/${Path.basename(_image.path)}}');
StorageUploadTask uploadTask = firebaseStorageRef.putFile(_image);
var dowurl = await (await uploadTask.onComplete).ref.getDownloadURL();
setState(() {
imageURL = dowurl.toString();
});
这段代码在您的构建中,所以每次调用setState((){});这就是设置您的imageUrl
您需要使用initState并在那里设置imageUrl
String imageURL = widget.ccaDocument['Image'];
String imageURL;
void initState() {
super.initState();
imageURL = widget.ccaDocument['Image'];
}