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为什么没有改变。 我尝试打印出来以确认上传图像中的图像URL是否已更改。 上载图片内的ImageURL已更改,但是publishEvent中的全局imageURL不变。 我正在尝试更改正在上传的图像。
有人可以带我出去吗?
谢谢。
答案 0 :(得分:1)
String imageURL = widget.ccaDocument['Image'];
此代码在您的内部版本中,因此每次您调用setState((){});这是设置您的imageUrl。
您需要使用initState并在其中设置imageUrl
String imageURL;
void initState() {
super.initState();
imageURL = widget.ccaDocument['Image'];
}