2023-08-19 19:42:56 +08:00

158 lines
4.9 KiB
Dart
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import 'dart:io';
import 'package:example/const.dart';
import 'package:example/http.dart';
import 'package:example/im.dart';
import 'package:flutter/material.dart';
import 'home.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return const MaterialApp(
debugShowCheckedModeBanner: false,
home: LoginDemo(),
);
}
}
class LoginDemo extends StatefulWidget {
const LoginDemo({super.key});
@override
LoginDemoState createState() => LoginDemoState();
}
class LoginDemoState extends State<LoginDemo> {
var apiStr = '';
var uidStr = '';
var tokenStr = '';
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.white,
appBar: AppBar(
title: const Text("登录"),
),
body: SingleChildScrollView(
child: Column(
children: <Widget>[
const Padding(
padding: EdgeInsets.only(top: 60.0),
child: Center(
child: Column(
children: [
Text(
'悟空IM登录',
style:
TextStyle(fontSize: 30, fontWeight: FontWeight.bold),
),
Text(
'悟空IM演示程序。当前SDK版本V1.0.1',
textAlign: TextAlign.center,
style:
TextStyle(fontSize: 20, fontWeight: FontWeight.bold),
)
],
),
),
),
Padding(
padding: const EdgeInsets.only(
left: 15.0, right: 15.0, top: 60, bottom: 0),
child: TextField(
onChanged: (val) {
apiStr = val;
},
decoration: const InputDecoration(
labelText: 'API基地址',
hintText: 'API基地址 默认【https://api.githubim.com】'),
),
),
Padding(
padding: const EdgeInsets.only(
left: 15.0, right: 15.0, top: 10, bottom: 0),
child: TextField(
onChanged: (val) {
uidStr = val;
},
decoration: const InputDecoration(
labelText: 'uid', hintText: '登录uid【随意输入】'),
),
),
Padding(
padding: const EdgeInsets.only(
left: 15.0, right: 15.0, top: 10, bottom: 0),
child: TextField(
onChanged: (val) {
tokenStr = val;
},
decoration: const InputDecoration(
labelText: 'token', hintText: '登录token【随意输入】'),
),
),
Container(
padding: const EdgeInsets.only(top: 30),
child: MaterialButton(
color: Colors.blue,
height: 45,
minWidth: 300,
child: const Text(
'登录',
style: TextStyle(color: Colors.white, fontSize: 18),
),
onPressed: () async {
if (apiStr != '') {
HttpUtils.apiURL = apiStr;
}
if (uidStr == '' || tokenStr == '') {
showDialog(
context: context,
builder: (context) {
return AlertDialog(
title: const Text('提示'),
content: const Text('uid和token不能为空'),
actions: <Widget>[
MaterialButton(
onPressed: () {
Navigator.pop(context);
},
child: const Text("确定"),
),
],
);
});
return;
}
var status = await HttpUtils.login(uidStr, tokenStr);
if (status == HttpStatus.ok) {
UserInfo.token = tokenStr;
UserInfo.uid = uidStr;
IMUtils.initIM().then((result) {
if (result) {
Navigator.push(
context,
MaterialPageRoute(
builder: (_) => const HomePage()));
}
});
}
},
),
),
],
),
),
);
}
}