home.dart 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. import 'package:e2ee_chat/common/global.dart';
  2. import 'package:e2ee_chat/l10n/localization_intl.dart';
  3. import 'package:e2ee_chat/common/api.dart';
  4. import 'package:e2ee_chat/presenter/theme.dart';
  5. import 'package:e2ee_chat/widgets/empty.dart';
  6. import 'package:e2ee_chat/view/mydrawer.dart';
  7. import 'package:flutter/material.dart';
  8. import 'package:provider/provider.dart';
  9. import 'contact_list.dart';
  10. import 'group.dart';
  11. import 'chat_list.dart';
  12. class HomeRoute extends StatefulWidget {
  13. @override
  14. _HomeRouteState createState() => _HomeRouteState();
  15. }
  16. class _HomeRouteState extends State<HomeRoute> {
  17. int _index = 0;
  18. @override
  19. void initState() {
  20. super.initState();
  21. }
  22. @override
  23. Widget build(BuildContext context) {
  24. var gm = GmLocalizations.of(context);
  25. return Scaffold(
  26. appBar: AppBar(
  27. title: Text(gm.home),
  28. actions: <Widget>[
  29. PopupMenuButton(itemBuilder: (context) {
  30. return <PopupMenuItem>[
  31. PopupMenuItem(
  32. child: Container(
  33. child: TextButton(
  34. onPressed: () => Navigator.of(context).pushNamed("add friend"),
  35. child: Row(
  36. children: [
  37. Icon(Icons.person_add),
  38. Text("添加朋友"),
  39. ],
  40. )),
  41. ))
  42. ];
  43. }),
  44. ],
  45. ),
  46. drawer: MyDrawer(),
  47. bottomNavigationBar: BottomNavigationBar(
  48. items: [
  49. BottomNavigationBarItem(icon: Icon(Icons.chat_bubble), label: "message"),
  50. BottomNavigationBarItem(icon: Icon(Icons.people), label: "friends"),
  51. BottomNavigationBarItem(icon: Icon(Icons.person), label: "group"),
  52. ],
  53. currentIndex: _index,
  54. fixedColor: Provider.of<ThemeModel>(context).theme,
  55. onTap: _onItemTapped,
  56. ),
  57. body: _buildBody(), // 构建主页面
  58. );
  59. }
  60. void _onItemTapped(int value) {
  61. setState(() {
  62. _index = value;
  63. });
  64. }
  65. Widget _buildBody() {
  66. switch (_index) {
  67. case 0:
  68. return ChatList();
  69. case 1:
  70. return ContactListView();
  71. case 2:
  72. return GroupRoute();
  73. }
  74. return EmptyWidget();
  75. // return RefreshIndicator(child: _buildChild(), onRefresh: _onRefresh);
  76. }
  77. Future<void> _onRefresh() async {
  78. // TODO: pull to refresh
  79. }
  80. }