nav_bar_page.dart 3.02 KB
import 'package:Parlando/account/page/account_page.dart';
import 'package:Parlando/home/home_page.dart';
import 'package:flutter/material.dart';
import 'package:flutter_gen/gen_l10n/Parlando_localizations.dart';
import 'package:provider/provider.dart';

import '../../account/account_router.dart';
import '../../events/trans_event.dart';
import '../../routers/fluro_navigator.dart';
import '../../routers/routers.dart';

class NavBarPage extends StatefulWidget {
  const NavBarPage({Key? key, required this.initialPage}) : super(key: key);

  final String initialPage;

  @override
  NavBarPageState createState() => NavBarPageState();
}

/// This is the private State class that goes with NavBarPage.
class NavBarPageState extends State<NavBarPage> {
  String _currentPage = 'HomePage';

  @override
  void initState() {
    super.initState();
    _currentPage = widget.initialPage;
  }

  @override
  Widget build(BuildContext context) {
    final tabs = {
      'HomePage': const Home(),
      'UploadStatusPage': const AccountPage(),
      'UserProfile': const AccountPage(),
    };
    return Scaffold(
      extendBody: true, // 底部nav bar透明
      body: tabs[_currentPage],
      bottomNavigationBar: Consumer(
        builder: (_, provider, __) {
          return BottomAppBar(
            color: Colors.transparent,
            child: Row(
                mainAxisSize: MainAxisSize.max,
                mainAxisAlignment: MainAxisAlignment.spaceAround,
                children: <Widget>[
                  InkWell(
                    onTap: () {
                      NavigatorUtils.push(context, Routes.navBarPage,
                          clearStack: true);
                    },
                    child: Container(
                      alignment: Alignment.center,
                      height: 36.0,
                      child: Text(
                        ParlandoLocalizations.of(context)
                            .onePoemBottomNavigationBarItemTitle,
                        style: const TextStyle(
                          color: Colors.white54,
                          fontSize: 16.0,
                        ),
                      ),
                    ),
                  ),
                  InkWell(
                    onTap: () {
                      eventBus.fire(TransEvent());
                      NavigatorUtils.push(
                        context,
                        AccountRouter.accountPage,
                      );
                    },
                    child: Container(
                      alignment: Alignment.center,
                      height: 36.0,
                      child: Text(
                        ParlandoLocalizations.of(context)
                            .profileBottomNavigationBarItemTitle,
                        style: const TextStyle(
                          color: Colors.white54,
                          fontSize: 16.0,
                        ),
                      ),
                    ),
                  ),
                ]),
          );
        },
      ),
    );
  }
}