| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- import 'package:e2ee_chat/azlistview/azlistview.dart';
- import 'package:e2ee_chat/common/api.dart';
- import 'package:e2ee_chat/common/global.dart';
- import 'package:e2ee_chat/model/contact_info.dart';
- import 'package:e2ee_chat/model/message.dart';
- import 'package:e2ee_chat/model/user.dart';
- import 'package:e2ee_chat/presenter/contact_list.dart';
- import 'package:e2ee_chat/presenter/chat_list.dart';
- import 'package:e2ee_chat/presenter/login.dart';
- import 'package:e2ee_chat/presenter/user_chat.dart';
- import 'package:e2ee_chat/view/user_chat.dart';
- import 'package:e2ee_chat/widgets/utils.dart';
- import 'package:flutter/material.dart';
- import 'package:provider/provider.dart';
- class ContactListView extends StatefulWidget {
- @override
- _ContactListViewState createState() => _ContactListViewState();
- }
- class _ContactListViewState extends State<ContactListView> {
- final presenter = ContactListPresenter();
- @override
- void initState() {
- super.initState();
- presenter.freshContacts().then((_) => setState(() {}));
- }
- @override
- Widget build(BuildContext context) {
- return ChangeNotifierProvider<ContactListPresenter>(
- create: (context) => presenter,
- child: Builder(
- builder: (context) {
- final provider = Provider.of<ContactListPresenter>(context);
- final contacts = provider.contacts;
- return RefreshIndicator(
- child: AzListView(
- data: contacts,
- itemCount: contacts.length,
- itemBuilder: (context, index) {
- ContactInfo info = contacts[index];
- return Utils.getWeChatListItem(context, info, defHeaderBgColor: Color(0xFFE5E5E5), onTap: () {
- if (info.getSuspensionTag() == '↑') {
- Navigator.of(context).pushNamed("friend request");
- } else {
- Navigator.of(context).pushNamed("user chat", arguments: info.name);
- }
- });
- },
- physics: BouncingScrollPhysics(),
- susItemBuilder: (BuildContext context, int index) {
- ContactInfo model = contacts[index];
- debug('sus item build contact info: name ${model.name} tag ${model.getSuspensionTag()}');
- if ('↑' == model.getSuspensionTag()) {
- return Container();
- }
- return Utils.getSusItem(context, model.getSuspensionTag());
- },
- indexBarData: ['↑', '☆', ...kIndexBarData],
- indexBarOptions: IndexBarOptions(
- needRebuild: true,
- ignoreDragCancel: true,
- downTextStyle: TextStyle(fontSize: 12, color: Colors.white),
- downItemDecoration: BoxDecoration(shape: BoxShape.circle, color: Colors.green),
- indexHintWidth: 120 / 2,
- indexHintHeight: 100 / 2,
- indexHintDecoration: BoxDecoration(
- image: DecorationImage(
- image: AssetImage(Utils.getImgPath('ic_index_bar_bubble_gray')),
- fit: BoxFit.contain,
- ),
- ),
- indexHintAlignment: Alignment.centerRight,
- indexHintChildAlignment: Alignment(-0.25, 0.0),
- indexHintOffset: Offset(-20, 0),
- ),
- ),
- onRefresh: () async {});
- },
- ),
- );
- }
- }
|