Hibok
Não pode escolher mais do que 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.
 
 
 
 
 
 

136 linhas
4.1 KiB

  1. import 'package:chat/data/chat_data_mgr.dart';
  2. import 'package:chat/data/constants.dart';
  3. import 'package:chat/data/group_data_mgr.dart';
  4. import 'package:chat/generated/i18n.dart';
  5. import 'package:chat/home/group_item_widget.dart';
  6. import 'package:chat/home/last_chat_record_widget.dart';
  7. import 'package:chat/models/ChatMsg.dart';
  8. import 'package:chat/models/group_info_model.dart';
  9. import 'package:chat/utils/CustomUI.dart';
  10. import 'package:chat/utils/receive_share_file.dart';
  11. import 'package:flutter/cupertino.dart';
  12. import 'package:flutter/material.dart';
  13. class ForwardPage extends StatefulWidget {
  14. final MsgModel forwardMsg;
  15. ForwardPage(this.forwardMsg);
  16. @override
  17. State<StatefulWidget> createState() {
  18. return ForwardPageState();
  19. }
  20. }
  21. class ForwardPageState extends State<ForwardPage>
  22. with SingleTickerProviderStateMixin {
  23. ScrollController _scrollController = ScrollController();
  24. List<GroupInfoModel> groupList = [];
  25. var lastMsgList = ChatDataMgr().lastMsgProvider.lastMsgList;
  26. TabController tabCtrl;
  27. @override
  28. void initState() {
  29. super.initState();
  30. tabCtrl = TabController(length: 2, vsync: this);
  31. groupList = GroupInfoMgr().groupInfoList;
  32. if (groupList.length == 0) {
  33. Future.delayed(Duration(seconds: 3), () {
  34. setState(() {
  35. groupList = GroupInfoMgr().groupInfoList;
  36. });
  37. });
  38. }
  39. }
  40. @override
  41. Widget build(BuildContext context) {
  42. Widget appBar = new AppBar(
  43. backgroundColor: AppColors.NewAppbarBgColor,
  44. title: new Text(
  45. '转发到',
  46. style: TextStyle(color: AppColors.NewAppbarTextColor),
  47. textScaleFactor: 1.0,
  48. ),
  49. leading: CustomUI.buildCustomLeading(context),
  50. centerTitle: true,
  51. bottom: PreferredSize(
  52. preferredSize: Size.fromHeight(28),
  53. child: Container(
  54. padding: EdgeInsets.only(left: 2),
  55. decoration: BoxDecoration(
  56. color: Constants.LightGreyBackgroundColor,
  57. border: Border(bottom: BorderSide(color: Color(0xffeaeaea)))),
  58. alignment: Alignment.centerLeft,
  59. child: TabBar(
  60. isScrollable: true,
  61. indicatorPadding: EdgeInsets.only(left: 9, right: 9),
  62. tabs: <Widget>[
  63. Container(
  64. margin: EdgeInsets.only(right: 4),
  65. child:
  66. Text(I18n.of(context).text_chat, textScaleFactor: 1.0),
  67. ),
  68. Container(
  69. margin: EdgeInsets.only(right: 4),
  70. child: Text(I18n.of(context).group_chat,
  71. textScaleFactor: 1.0)),
  72. ],
  73. controller: tabCtrl,
  74. ),
  75. )));
  76. return Material(
  77. child: SafeArea(
  78. child: Scaffold(
  79. appBar: appBar,
  80. body: TabBarView(
  81. children: <Widget>[
  82. LastChatPage(
  83. needRobot: false,
  84. enterType: 2,
  85. enterContent: widget.forwardMsg,
  86. ),
  87. ///群聊
  88. groupList.length == 0
  89. ? Container()
  90. : Container(
  91. child: ListView.builder(
  92. controller: _scrollController,
  93. itemBuilder: (BuildContext context, int index) {
  94. var info = groupList[index];
  95. return GroupItem(
  96. ValueKey(info),
  97. groupInfoModel: info,
  98. enterType: 2,
  99. enterContent: widget.forwardMsg,
  100. );
  101. },
  102. itemCount: groupList.length,
  103. ))
  104. ],
  105. controller: tabCtrl,
  106. ),
  107. ),
  108. ),
  109. );
  110. // return SafeArea(child: Scaffold(body: FileReaderView(
  111. // filePath: widget.filePath,
  112. // ),));
  113. }
  114. @override
  115. void dispose() {
  116. super.dispose();
  117. ReceiveShareFile.tempFilePath = null;
  118. tabCtrl.dispose();
  119. }
  120. }