# 创建发送短信验证码服务
# 创建服务单例
# 安装get_it
dependencies:
get_it: ^7.2.0
使用flutter pub get
安装。
创建文件lib/services/user_service.dart
:
class UserService {
Future sendCode(String mobile) async {
var params = {
'mobile': mobile,
};
var res = await DioHttp().get('/public/sendcode', params);
// ...
}
}
创建lib/setup_get_it.dart
文件:
import 'package:get_it/get_it.dart';
import 'package:my_app/services/user_service.dart';
final getIt = GetIt.instance;
void setupGetIt() {
getIt.registerLazySingleton<UserService>(() => UserService());
}
# 完善button事件与数据传递
需求:
- 获取mobile输入框部分的内容;
- 进行正则判断(后续)->包括,按钮状态的改变;
- 通过则发送网络请求
找到main.dart
:
// 获取数据,需要创建一个TextEditingController
TextEditingController controller = TextEditingController();
TextEditingController codeController = TextEditingController();
// methods2: Padding
Padding(
padding: const EdgeInsets.only(top: 10.0),
child: SizedBox(
width: 120,
child: ElevatedButton(
child: Text('登录'),
onPressed: () async {
String mobile = controller.text;
String code = codeController.text;
await userService.login(mobile, code);
},
),
),
)
调试过程中,需要获取本地的IP地址——原因:模拟器中的localhost代表着它自己,所以就请求不到服务器端的接口。
调整
config.dart
其中的baseUrl为本地的ip地址,命令:mac通过ifconfig |grep 192
,windows通过ipconfig
例如:
static const String baseUrl = 'http://192.168.31.132:3000';
# 获取数据
思考:
返回的是map类型,取用数据不太方便(嵌套数据)。