Untitled

 avatar
unknown
plain_text
2 years ago
5.0 kB
3
Indexable
// noti_page
import 'package:finbox_v2/feature/notification/provider/noti_provider.dart';
import 'package:finbox_v2/feature/notification/widget/noti_management.dart';
import 'package:finbox_v2/feature/notification/widget/noti_tab.dart';
import 'package:finbox_v2/feature/notification/widget/system_tab.dart';
import 'package:finbox_v2/l10n/l10n.dart';
import 'package:finbox_v2/shared/repository/user_repository.dart';
import 'package:finbox_v2/shared/util/navigation_util.dart';
import 'package:finbox_v2/theme/finbox_theme.dart';
import 'package:finbox_v2/theme/main_layout.dart';
import 'package:finbox_v2/widgets/custom_underline_indicator.dart';
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';

class NotificationPage extends ConsumerStatefulWidget {
  const NotificationPage({Key? key}) : super(key: key);

  @override
  ConsumerState<NotificationPage> createState() => NotificationPageState();
}

class NotificationPageState extends ConsumerState<NotificationPage>
    with SingleTickerProviderStateMixin {
  @override
  void dispose() {
    print('dispose parent widget');
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    late final finboxColors = Theme.of(context).extension<FinboxColors>()!;
    late final textTheme = Theme.of(context).textTheme;
    final user = ref.watch(userDataProvider);

    return PopLayout(
        actions: [
          IconButton(
              icon: Icon(Icons.edit),
              onPressed: () {
                ref.refresh(notiProvider);
                Navigator.pushReplacement(
                  context,
                  MaterialPageRoute(
                    builder: (context) => NotiManagement(user: user!),
                  ),
                );
              }),
        ],
        titleAppbar: '',
        content: Column(
          children: [
            Align(
              alignment: Alignment.centerLeft,
              child: Container(
                margin: EdgeInsets.only(left: 16),
                padding: EdgeInsets.only(top: 10),
                child: Text(
                  context.l10n.thong_bao,
                  style: textTheme.displaySmall!.copyWith(
                    fontWeight: FinboxFontWeight.semiBold.value,
                  ),
                ),
              ),
            ),
            SizedBox(
              height: 21,
            ),
            Expanded(
              child: DefaultTabController(
                length: 2,
                child: Column(
                  children: [
                    Align(
                      alignment: Alignment.centerLeft,
                      child: TabBar(
                        physics: const BouncingScrollPhysics(),
                        isScrollable: true,
                        unselectedLabelColor: finboxColors.dark3,
                        unselectedLabelStyle:
                            finboxColors.fontBodyNormal!.copyWith(
                          fontWeight: FinboxFontWeight.medium.value,
                        ),
                        labelStyle: finboxColors.fontBodyNormal!.copyWith(
                          fontWeight: FinboxFontWeight.medium.value,
                        ),
                        tabs: <Widget>[
                          Tab(
                            // text:
                            child: Text(
                              context.l10n.he_thong,
                              style: finboxColors.fontBodyLarge!.copyWith(
                                fontWeight: FinboxFontWeight.medium.value,
                              ),
                            ),
                          ),
                          Tab(
                            // text:
                            child: Text(
                              context.l10n.thong_bao,
                              style: finboxColors.fontBodyLarge!.copyWith(
                                fontWeight: FinboxFontWeight.medium.value,
                              ),
                            ),
                          ),
                        ],
                        indicatorPadding: const EdgeInsets.all(7),
                        indicator: CustomUnderlineIndicator(
                          horizontalPadding: 20,
                          color: finboxColors.mainColor!,
                        ),
                      ),
                    ),
                    Expanded(
                      child: PageView(
                        pageSnapping: false,
                        children: [
                          TabBarView(
                            children: <Widget>[
                              SystemTab(user: user!),
                              NotiTab(),
                            ],
                          ),
                        ],
                      ),
                    ),
                  ],
                ),
              ),
            ),
          ],
        ));
  }
}
Editor is loading...