颤振状态改变

时间:2020-06-25 15:17:05

标签: flutter google-cloud-firestore

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不变。 我正在尝试更改正在上传的图像。

有人可以带我出去吗?

谢谢。

1 个答案:

答案 0 :(得分:1)

String imageURL = widget.ccaDocument['Image'];

此代码在您的内部版本中,因此每次您调用setState((){});这是设置您的imageUrl。

您需要使用initState并在其中设置imageUrl

String imageURL;

void initState() {
   super.initState();
   imageURL = widget.ccaDocument['Image'];
}