Flutter:如何将我的代码转移到另一个页面并在此处访问它

Flutter: How do i shift my code to another page and access it here

我对 Dart 很陌生,而且一般来说是编码。我在观看 YouTube 上的教程后制作了这段代码。在大多数情况下,我已经能够自己解决大部分问题,在这里我觉得我需要一些帮助。我已经编写了上传照片的代码,但我想将方法​​转移到另一个方法并访问该功能。

这是我的代码

class EditProfile extends StatefulWidget {
      EditProfile({Key? key}) : super(key: key);
    
      @override
      State<EditProfile> createState() => _EditProfileState();
    }
    
    class _EditProfileState extends State<EditProfile> {
      File? image;
    
      Future PickedImage(ImageSource source) async {
        try {
          final image = await ImagePicker()
              .pickImage(source: source, maxWidth: 160, maxHeight: 160);
          if (image == null) return;
          setState(() {
            final _imgTemp = File(image.path);
          });
        } on PlatformException catch (e) {
          print('failed to Upload $e');
        }
      }
    
      @override
      Widget build(BuildContext context) {
        var _textController = ProfileEdit();
    
        return Scaffold(
            body: GetX<ProfileController>(
          init: Get.put<ProfileController>(ProfileController()),
          builder: (ProfileController profileController) {
            return Container(
              child: ListView.builder(
                  itemCount: profileController.profiles.length,
                  itemBuilder: (BuildContext context, int i) {
                    final _profileModel = profileController.profiles[i];
                    setTextEditControllerValue(_textController, _profileModel);
    
                    return SafeArea(
                      child: Container(
                        padding: EdgeInsets.all(20),
                        child: Form(
                          child: Column(
                            children: [
                              const SizedBox(
                                height: 20,
                              ),
                              GestureDetector(
                                onTap: () {
                                  photoBottomSheet();
                                },
                                child: CircleAvatar(
                                  radius: 100,
                                  backgroundImage: NetworkImage(
                                      'https://www.alchinlong.com/wp-content/uploads/2015/09/sample-profile.png'),
                                ),
                              ),
                              const SizedBox(
                                height: 40,
                              ),
                              TextFormField(
                                  decoration: const InputDecoration(
                                    labelText: 'First Name',
                                    border: OutlineInputBorder(
                                        borderSide: BorderSide()),
                                  ),
                                  controller: _textController.fNameController),
                              SizedBox(
                                height: 10,
                              ),
                              TextFormField(
                                decoration: const InputDecoration(
                                  labelText: 'First Name',
                                  border:
                                      OutlineInputBorder(borderSide: BorderSide()),
                                ),
                                controller: _textController.lNameController,
                              ),
                              SizedBox(
                                height: 10,
                              ),
                              TextFormField(
                                decoration: const InputDecoration(
                                  labelText: 'Address',
                                  border:
                                      OutlineInputBorder(borderSide: BorderSide()),
                                ),
                                controller: _textController.adressController,
                              ),
                              SizedBox(
                                height: 10,
                              ),
                              TextFormField(
                                decoration: const InputDecoration(
                                  labelText: 'Phone Numbaer',
                                  border:
                                      OutlineInputBorder(borderSide: BorderSide()),
                                ),
                                controller: _textController.phoneController,
                              ),
                              SizedBox(
                                height: 10,
                              ),
                              TextFormField(
                                decoration: const InputDecoration(
                                  labelText: 'School Name',
                                  border:
                                      OutlineInputBorder(borderSide: BorderSide()),
                                ),
                                controller: _textController.sclNameController,
                              ),
                              SizedBox(
                                height: 10,
                              ),
                              TextFormField(
                                decoration: const InputDecoration(
                                  labelText: 'Student Class',
                                  border:
                                      OutlineInputBorder(borderSide: BorderSide()),
                                ),
                                controller: _textController.stdClassController,
                              ),
                              SizedBox(
                                height: 10,
                              ),
                              ElevatedButton(
                                  onPressed: () async {
                                    CircularProgressIndicator();
    
                                    ProfileModel profileModel =
                                        profileModelVal(_textController);
                                    await FirestoreDb.updateProfile(profileModel);
                                    Get.offAll(ProfileScreen());
                                  },
                                  child: Text('Update'))
                            ],
                          ),
                        ),
                      ),
                    );
                  }),
            );
          },
        ));
      }
    
      void photoBottomSheet() {
        Get.bottomSheet(
          Container(
            //color: Colors.white,
            height: 150,
            child: Column(
              mainAxisAlignment: MainAxisAlignment.center,
              crossAxisAlignment:
                  CrossAxisAlignment.center,
              children: [
                //Text('Select from source'),
                GestureDetector(
                  onTap: () =>
                      PickedImage(ImageSource.camera),
                  child: Row(
                    mainAxisAlignment:
                        MainAxisAlignment.center,
                    children: [
                      Icon(
                        Icons.camera,
                        size: 25,
                        color: Colors.white,
                      ),
                      SizedBox(
                        width: 10,
                      ),
                      Text(
                        'Camera',
                        style: TextStyle(fontSize: 25, color: Colors.white),
                      ),
                    ],
                  ),
                ),
                SizedBox(
                  height: 10,
                ),
                Divider(
                  thickness: 0.5, color: Colors.white,
                ),
                SizedBox(
                  height: 10,
                ),
                GestureDetector(
                  onTap: () =>
                      PickedImage(ImageSource.gallery),
                  child: Row(
                    mainAxisAlignment:
                        MainAxisAlignment.center,
                    children: [
                      Icon(
                        Icons.image,
                        size: 25,
                        color: Colors.white,
                      ),
                      SizedBox(
                        width: 10,
                      ),
                      Text(
                        'Gallery',
                        style: TextStyle(fontSize: 25, color: Colors.white),
                      ),
                    ],
                  ),
                ),
              ],
            ),
          ),
          backgroundColor: Color(0xff2AA8A1),
          shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(20)),
    
        );
      }
    
      ProfileModel profileModelVal(ProfileEdit _textController) {
        final profileModel = ProfileModel(
            firstName: _textController.fNameController.text.trim(),
            lastName: _textController.lNameController.text.trim(),
            parentName: _textController.fatherNameController.text.trim(),
            phoneNumber: _textController.phoneController.text.trim(),
            address: _textController.adressController.text.trim(),
            schoolName: _textController.sclNameController.text.trim(),
            stdClass: _textController.stdClassController.text.trim());
        return profileModel;
      }
    
      void setTextEditControllerValue(
          ProfileEdit _textController, ProfileModel _profileModel) {
        _textController.fNameController.value =
            TextEditingValue(text: _profileModel.firstName);
        _textController.lNameController.value =
            TextEditingValue(text: _profileModel.lastName);
        _textController.fatherNameController.value =
            TextEditingValue(text: _profileModel.parentName);
        _textController.adressController.value =
            TextEditingValue(text: _profileModel.address);
        _textController.phoneController.value =
            TextEditingValue(text: _profileModel.phoneNumber);
        _textController.sclNameController.value =
            TextEditingValue(text: _profileModel.schoolName);
        _textController.stdClassController.value =
            TextEditingValue(text: _profileModel.stdClass);
      }
    
      void clearTextController(ProfileEdit _textController) {
        _textController.fNameController.clear();
        _textController.lNameController.clear();
        _textController.fatherNameController.clear();
        _textController.adressController.clear();
        _textController.phoneController.clear();
        _textController.sclNameController.clear();
        _textController.stdClassController.clear();
      }
    }

现在 photoBottomSheet() 方法必须转移到另一个文件,我应该在我想要的任何页面中使用它。请在这里帮助我。

创建一个名为 photo_bottom_sheet 的 dart 文件并在其中添加该方法,然后您只需在 dart 文件顶部导入该文件,如下所示:

import 'package:app/photo_bottom_sheet';

然后在需要的地方添加方法

photoBotomSheet()

你想要的地方。

1.copy 函数并制作单独的 .dart 文件。 2. 像导入包一样从该文件中导入该函数。