0

クラス"EditProfilePage"でsetState メソッドを呼び出したいので、statefulWidget に変更する必要がありました。

class EditProfilePage extends StatefulWidget {

  @override
  _EditProfilePageState createState() => _EditProfilePageState();

}

class _EditProfilePageState extends State<EditProfilePage> {

  TextEditingController nameController = new TextEditingController();
  TextEditingController bioController = new TextEditingController();
   File file;

       .
       .
       .

     applyChanges() {
    Firestore.instance
        .collection('insta_users')
        .document(currentUserModel.id)
        .updateData({
      "displayName": nameController.text,
      "bio": bioController.text

    });
  }
 }

しかし今、私のクラス「Profile_page」は「EditProfilePage」の「applyChanges()」メソッドを見逃しているようで、次のエラーをスローします:

メソッド「applyChanges」がクラス「EditProfilePage」に対して定義されていません。

'EditProfilePage 'からapplyChanges()を呼び出す'Profile_Page'のメソッドを次に示します。

editProfile() {
    EditProfilePage editPage = new EditProfilePage();

    Navigator.of(context)
        .push(new MaterialPageRoute<bool>(builder: (BuildContext context) {
      return new Center(
        child: new Scaffold(
            appBar: new AppBar(
              leading: new IconButton(
                icon: new Icon(Icons.close),
                onPressed: () {
                  Navigator.maybePop(context);
                },
              ),
              title: new Text('Edit Profile',
                  style: new TextStyle(
                      color: Colors.black, fontWeight: FontWeight.bold)),
              elevation: 1.0,
              backgroundColor: Colors.white,
              actions: <Widget>[
                new IconButton(
                    icon: new Icon(
                      Icons.check,
                      color: Colors.blueAccent,
                    ),
                    onPressed: () {
                      editPage.applyChanges();
                      Navigator.maybePop(context);
                    })

この問題を解決する方法について何か提案はありますか? インポートを忘れていませんでした。

ところで、私はフラッターが初めてで、ダーツを理解しようとしています。よろしくお願いします!

4

1 に答える 1