用flutter 的getx写一个打开相册选择图片返回页面并将图片共享至setting页面的代码
时间: 2024-05-09 07:18:01 浏览: 9
好的,以下是代码示例:
1. 在 pubspec.yaml 中添加依赖:
```
dependencies:
get: ^4.1.4
get_storage: ^2.0.3
image_picker: ^0.8.3+3
```
2. 创建一个选择图片的页面:
```dart
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:image_picker/image_picker.dart';
class PhotoSelectPage extends StatelessWidget {
final ImagePicker _picker = ImagePicker();
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('选择图片'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
ElevatedButton(
onPressed: () async {
final XFile? image =
await _picker.pickImage(source: ImageSource.gallery);
if (image != null) {
Get.back(result: File(image.path));
}
},
child: Text('选择图片'),
),
],
),
),
);
}
}
```
3. 在设置页面中使用 `GetStorage` 存储图片路径:
```dart
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:get_storage/get_storage.dart';
class SettingPage extends StatelessWidget {
final _box = GetStorage();
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('设置'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
ElevatedButton(
onPressed: () async {
final File? image = await Get.to<File>(() => PhotoSelectPage());
if (image != null) {
_box.write('image_path', image.path);
}
},
child: Text('选择图片'),
),
SizedBox(height: 16),
Obx(() {
final imagePath = _box.read('image_path') ?? '';
return Text(imagePath);
}),
],
),
),
);
}
}
```
在这个示例中,我们使用 `Get` 管理路由,通过 `Get.to<File>(...)` 打开选择图片页面并获取返回值,然后使用 `GetStorage` 存储图片路径并在设置页面中展示。