add_friend.dart 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. import 'package:dio/dio.dart';
  2. import 'package:e2ee_chat/common/api.dart';
  3. import 'package:e2ee_chat/common/global.dart';
  4. import 'package:e2ee_chat/l10n/localization_intl.dart';
  5. import 'package:e2ee_chat/presenter/login.dart';
  6. import 'package:e2ee_chat/presenter/theme.dart';
  7. import 'package:flutter/material.dart';
  8. import 'package:provider/provider.dart';
  9. import 'package:fluttertoast/fluttertoast.dart';
  10. class AddFriendView extends StatefulWidget {
  11. @override
  12. _AddFriendViewState createState() => _AddFriendViewState();
  13. }
  14. class _AddFriendViewState extends State<AddFriendView> {
  15. TextEditingController _unameController = new TextEditingController();
  16. GlobalKey _formKey = new GlobalKey<FormState>();
  17. @override
  18. Widget build(BuildContext context) {
  19. return Scaffold(
  20. appBar: AppBar(title: Text(GmLocalizations.of(context).searchUser)),
  21. body: Padding(
  22. padding: const EdgeInsets.all(16.0),
  23. child: Form(
  24. key: _formKey,
  25. autovalidateMode: AutovalidateMode.always, // TODO: what is AutovalidateMode?
  26. child: Column(
  27. children: <Widget>[
  28. TextFormField(
  29. controller: _unameController,
  30. decoration: InputDecoration(
  31. labelText: GmLocalizations.of(context).userName,
  32. hintText: GmLocalizations.of(context).userNameOrEmail,
  33. prefixIcon: Icon(Icons.search),
  34. ),
  35. validator: (v) {
  36. return v!.trim().isNotEmpty ? null : GmLocalizations.of(context).userNameRequired;
  37. }),
  38. Padding(
  39. padding: const EdgeInsets.only(top: 25),
  40. child: ConstrainedBox(
  41. constraints: BoxConstraints.expand(height: 55.0),
  42. child: ElevatedButton(
  43. style: ButtonStyle(
  44. //TODO: something wrong with text color
  45. textStyle: MaterialStateProperty.all<TextStyle>(TextStyle(color: Colors.white)),
  46. ),
  47. onPressed: _findUser,
  48. child: Text(GmLocalizations.of(context).search),
  49. ),
  50. ),
  51. ),
  52. ],
  53. ),
  54. ),
  55. ),
  56. );
  57. }
  58. void _findUser() async {
  59. // 提交前,先验证各个表单字段是否合法
  60. if ((_formKey.currentState as FormState).validate()) {
  61. Fluttertoast.showToast(msg: GmLocalizations.of(context).loading);
  62. bool result = await Api().addFriend(_unameController.text);
  63. if (!result) {
  64. Fluttertoast.showToast(msg: "发送好友申请失败");
  65. } else {
  66. Fluttertoast.showToast(msg: "好友申请已发送");
  67. }
  68. }
  69. // TODO: get user details
  70. }
  71. }