后端接口

前端调用接口代码

import 'package:dio/dio.dart';
import 'package:flutter/material.dart'; import '../page/login.dart'; //注册功能
Future<void> register(
BuildContext context,
String username,
String password,
String username2,
String phoneNumber,
String email)
async {
try {
Dio dio = Dio();
String checkUrl = "http://192.168.95.241:9090/user/checkUserNameExistence?userName=$username";
Response checkResponse = await dio.get(checkUrl); if (checkResponse.data) {
// 用户名已存在,提示用户无法注册
showDialog(
context: context,
builder: (BuildContext context) {
return AlertDialog(
title: Text('注册失败'),
content: Text('用户名已存在,请选择其他用户名'),
actions: <Widget>[
TextButton(
onPressed: () {
Navigator.of(context).pop(); // 关闭对话框
},
child: Text('确定'),
),
],
);
},
);
return;
} // 用户名不存在,可以进行注册
String registerUrl = "http://192.168.95.241:9090/user";
Map<String, dynamic> data = {
"user_name": username,
"user_password": password,
"user_name2": username2,
"user_phone": phoneNumber,
"user_email": email
};
Response response = await dio.post(registerUrl, data: data); if (response.statusCode == 200) {
// 注册成功
showDialog(
context: context,
builder: (BuildContext context) {
return AlertDialog(
title: Text('注册成功'),
actions: <Widget>[
TextButton(
onPressed: () {
Navigator.of(context).pop(); // 关闭对话框
Navigator.of(context).pushReplacement( // 替换当前页面为登录页面
MaterialPageRoute(builder: (context) => LoginPage(key: UniqueKey())),
);
},
child: Text('确定'),
),
],
);
},
);
} else {
// 注册失败
showDialog(
context: context,
builder: (BuildContext context) {
return AlertDialog(
title: Text('注册失败'),
content: Text('错误码: ${response.statusCode}'),
actions: <Widget>[
TextButton(
onPressed: () {
Navigator.of(context).pop();
},
child: Text('确定'),
),
],
);
},
);
}
} catch (e) {
// 请求过程中出现错误
showDialog(
context: context,
builder: (BuildContext context) {
return AlertDialog(
title: Text('请求错误'),
content: Text('$e'),
actions: <Widget>[
TextButton(
onPressed: () {
Navigator.of(context).pop();
},
child: Text('确定'),
),
],
);
},
);
}
} //登录功能 Future<void> login(
BuildContext context,
String username,
String password)
async { Dio dio = Dio();
String checkUrl = "http://192.168.95.241:9090/user/checkCredentials"; Map<String, dynamic> data = {
"user_name": username,
"user_password": password, };
Response response = await dio.post(checkUrl, data: data); if (response.statusCode == 200) {
bool isAuthenticated = response.data; if (isAuthenticated) {
// 显示登录成功对话框
showDialog(
context: context,
builder: (BuildContext context) {
return AlertDialog(
title: Text('登录成功'),
content: Text('欢迎回来!'),
actions: [
TextButton(
onPressed: () {
Navigator.of(context).pop(); // 关闭对话框
},
child: Text('确定'),
),
],
);
},
);
} else {
// 身份验证失败,显示错误消息或采取相应的操作
showDialog(
context: context,
builder: (BuildContext context) {
return AlertDialog(
title: Text('登录失败'),
content: Text('用户名或密码不正确'),
actions: [
TextButton(
onPressed: () {
Navigator.of(context).pop(); // 关闭对话框
},
child: Text('确定'),
),
],
);
},
);
}
}
} import 'dart:async'; import 'package:dio/dio.dart';
import 'package:flutter/material.dart'; // 导入获取用户信息的方法
import '../Do/UserDao.dart';
import '../component/container.dart';
import '../component/drawer.dart';
import 'Home1.dart';
import 'login.dart'; class MyApp2 extends StatelessWidget {
final String username; const MyApp2({Key? key, required this.username}) : super(key: key); // 调用父类构造函数 @override
Widget build(BuildContext context) {
return MaterialApp(
title: '心语航标',
theme: ThemeData(
primarySwatch: Colors.purple,
),
home: MyHome2(username: username),
);
}
} class MyHome2 extends StatefulWidget {
final String username; const MyHome2({Key? key, required this.username}) : super(key: key); @override
_MyHome2State createState() => _MyHome2State();
} class _MyHome2State extends State<MyHome2> {
Map<String, dynamic> userInfo = {}; // 初始化userInfo @override
void initState() {
super.initState();
getUserInfo(widget.username); // 调用获取用户信息的方法
} //登录查询用户信息
Future<void> getUserInfo(String username) async {
Dio dio = Dio();
String apiUrl = "http://192.168.95.241:9090/user/findAll?user_name=$username"; try {
Response response = await dio.get(apiUrl);
print(response);
if (response.statusCode == 200) {
setState(() {
userInfo = response.data; // 更新userInfo
});
} else {
setState(() {
userInfo = {}; // 请求失败时将userInfo清空
});
}
} catch (e) {
print("Error fetching user info: $e");
setState(() {
userInfo = {}; // 发生异常时将userInfo清空
});
}
} @override
Widget build(BuildContext context) {
return DefaultTabController(
length: 4,
child: Scaffold(
appBar: AppBar(
title: const Text('心语航标'),
centerTitle: true,
actions: <Widget>[
IconButton(
icon: const Icon(Icons.search),
onPressed: () {
// 搜索操作
},
),
],
),
drawer: buildCustomDrawer(
accountEmail: userInfo['user_email'] ?? '未知邮箱',
accountName: userInfo['user_name2'] ?? '未登录',
currentAccountPictureAsset: 'assets/阿尼亚.jpg',
drawerBackgroundAsset: 'assets/可可爱爱阿尼亚.jpg',
drawerItems: [
DrawerItem(title: '用户反馈', icon: Icons.feedback),
DrawerItem(title: '系统设置', icon: Icons.settings),
DrawerItem(title: '我要发布', icon: Icons.send),
DrawerItem(title: '注销', icon: Icons.exit_to_app),
],
onLoginPressed: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => LoginPage(key: UniqueKey()),
),
);
},
),
bottomNavigationBar: buildCustomBottomNavigationBar(
tabs: [
const Tab(icon: Icon(Icons.home), text: '首页'),
const Tab(icon: Icon(Icons.article), text: '专栏'),
const Tab(icon: Icon(Icons.chat_bubble), text: 'AI咨询'),
const Tab(icon: Icon(Icons.notifications), text: '消息'),
],
backgroundColor: Colors.black,
height: 60.0,
labelStyle: const TextStyle(height: 0, fontSize: 12),
),
body: TabBarView(
children: <Widget>[
home1(mt: 'in_teher', key: GlobalKey()),
const Text('data2'),
const Text('data3'),
const Text('data4'),
],
),
),
);
}
}

  

flutter 结合 springBoot 完成登录 注册 功能的更多相关文章

  1. Java Spring+Mysql+Mybatis 实现用户登录注册功能

    前言: 最近在学习Java的编程,前辈让我写一个包含数据库和前端的用户登录功能,通过看博客等我先是写了一个最基础的servlet+jsp,再到后来开始用maven进行编程,最终的完成版是一个 Spri ...

  2. springboot之登录注册

    springboot之登录注册 目录结构 pom.xml <?xml version="1.0" encoding="UTF-8"?> <pr ...

  3. Node.js实现登录注册功能

    使用Node.js + Navicat for mysql实现的登录注册功能 数据库中存在有”user_id,user_name,password,user_img,user_number“字段,其中 ...

  4. SSM 实现登录注册功能

    1.上一篇SSM框架搭建好了之后就要开始写功能了,现在来写一个简单的登录注册功能 这几个包是自己手动创建的,然后往里面写代码 2.代码详情 package com.maike.controller; ...

  5. flask 开发用户登录注册功能

    flask 开发用户登录注册功能 flask开发过程议案需要四个模块:html页面模板.form表单.db数据库操作.app视图函数 1.主程序 # app.py # Auther: hhh5460 ...

  6. vue koa2 mongodb 从零开始做个人博客(一) 登录注册功能前端部分

    0.效果演示 插入视频插不进来,就很烦.可以出门右拐去优酷看下(点我!). 1.准备工作 1.1前端框架 前端使用了基于vue.js的nuxt.js.为什么使用nuxt.js? 首先我做的是博客的项目 ...

  7. JAVAEE_Servlet_20_登录注册功能

    实现登录注册功能 注册功能 import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import j ...

  8. JAVAEE——宜立方商城11:sso登录注册功能实现、通过token获得用户信息、Ajax跨域请求(jsonp)

    1. 学习计划 第十一天: 1.sso注册功能实现 2.sso登录功能实现 3.通过token获得用户信息 4.Ajax跨域请求(jsonp) 2. Sso系统工程搭建 需要创建一个sso服务工程,可 ...

  9. App登录注册功能,怎样做到用户体验最佳?

    用户登录系统,可以细分为三项功能模块,分别是:登录.注册和密码找回.本文作者将结合自身经历,谈谈他在做这块的时候一些想法,主要是涉及业务流程. 登录和注册功能,不论是PC端还是移动端,大多数产品都会涉 ...

  10. PHP实现用户登录注册功能

    初学php做了一些比较常见且有用的页面,放在上面记录一下咯 我是用了bootstrap框架里面的模态框做注册登陆页面,这样页面比较美观 页面效果: 注册成功条件/功能: 1)用户名不能冲突 2)两次密 ...

随机推荐

  1. Fluid — 云原生环境下的高效“数据物流系统”

    简介: 为了解决大数据.AI 等数据密集型应用在云原生计算存储分离场景下,存在的数据访问延时高.联合分析难.多维管理杂等痛点问题,南京大学 PASALab.阿里巴巴.Alluxio 在 2020 年 ...

  2. 面向B端算法实时业务支撑的工程实践

    简介:在营销场景下,算法同学会对广告主提供个性化的营销工具,帮助广告主更好的精细化营销,在可控成本内实现更好的ROI提升.我们在这一段时间支持了多个实时业务场景,比如出价策略的实时化预估.关键词批量服 ...

  3. Python编程的若干个经典小技巧

    1. 原地交换两个数字 Python 提供了一个直观的在一行代码中赋值与交换(变量值)的方法,请参见下面的示例: x,y= 10,20 print(x,y) x,y= y,x print(x,y) # ...

  4. [FAQ] uni-app 不支持 v-cloak 情况下如何处理 v-if 页面闪烁问题

    在 Vue 中存在使用 v-if 决定元素显示隐藏的时候,会出现页面闪烁,那么当然 uni-app 中也存在了. 如果编译完后,需要满足 js 的某个条件才隐藏,页面元素必然会有闪烁的情况. 所以解决 ...

  5. Oracle和达梦:相似度函数:UTL_MATCH

    UTL_MATCH介绍: Oracle的UTL_MATCH包是一个提供字符串匹配和相似度计算功能的工具包.它包含了一系列函数,用于执行字符串比较.相似度计算和模式匹配等操作. UTL_MATCH包中的 ...

  6. Oracle细粒度审计策略

    场景:经常需要查看某些表做了哪些操作. Oracle中,可以添加细粒度策略来获取,如下: begin dbms_fga.add_policy(object_schema => 'portxx', ...

  7. VSCode:所选环境中没有可用的Pip安装程序

    VSCode:所选环境中没有可用的Pip安装程序 然后我尝试格式化我的代码,VSCode说没有安装autopep8,可以通过Pip安装 . 但是,当我尝试通过Pip安装时,它会说 There is n ...

  8. n个人围成一圈,顺序排号从1到n。从第一个人开始报数(从一到三如此循环)。凡是报到三的出局,最后剩下的一个人原始编号为?

    #include<stdio.h> int main(){ int num,n,i=0,flag=0; //num记录剩余人数,n记录总人数,i为原始编号,flag为编号123时的编号 p ...

  9. 使用DP-Modeler、ModelFun模方软件修复实景三维模型教程

    P-Modeler   DP-Modeler是武汉天际航自主研发的一款集精细化单体建模与Mesh网格模型修饰于一体的软件.支持三维模型一键水面修复.道路置平.建筑局部修饰.删除底部碎片.植被处理.桥隧 ...

  10. 鸿蒙HarmonyOS实战-ArkUI事件(组合手势)

    一.组合手势 应用程序的手势操作是指在移动设备上使用手指或手势进行与应用程序交互的方式.手势操作可以包括点击.滑动.双击.捏合等动作,用于实现不同的功能和操作. HarmonyOS中常见的手势操作及其 ...