import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:gitea_client/cubit/repo_event.dart'; import 'package:gitea_client/cubit/repo_cubit.dart'; import 'package:gitea_client/model/ApiAccess.dart'; import 'package:gitea_client/model/user.dart'; import 'package:gitea_client/service/gitea_service.dart'; import 'package:gitea_client/widget/repo_list.dart'; import 'package:gitea_client/widget/search_page.dart'; class MainPage extends StatefulWidget { final SavedUser savedUser; const MainPage({Key? key, required this.savedUser}) : super(key: key); @override _MainPage createState() => _MainPage(); } class _MainPage extends State { int pageIndex = 0; final GlobalKey _key = GlobalKey(); late final List pages; @override void initState() { pages = [ RepoListPage(user: widget.savedUser), SearchPage(user: widget.savedUser) ]; } @override Widget build(BuildContext context) { return Scaffold( key: _key, appBar: AppBar( title: const Text("My Repositories"), leading: IconButton( icon: const Icon(Icons.menu), onPressed: () => _key.currentState!.openDrawer(), ), ), drawer: Drawer( child: ListView( padding: EdgeInsets.zero, children: [ DrawerHeader( decoration: BoxDecoration( color: Colors.green, ), child: Row( children: [ Container( padding: EdgeInsets.all(5), child: Image.network( widget.savedUser.authedUser.avatarUrl!, width: 60, )), Text( widget.savedUser.authedUser.username!, style: TextStyle( color: Colors.white, fontWeight: FontWeight.bold), ), ], ), ), Container( color: (pageIndex == 0) ? Colors.lightGreen[100] : Colors.white, child: ListTile( title: Text('My Repositories'), onTap: () => { setState(() => {pageIndex = 0}) }, ), ), Container( color: (pageIndex == 1) ? Colors.lightGreen[100] : Colors.white, child: ListTile( title: const Text('Explore'), onTap: () => { setState(() => {pageIndex = 1}) }, ), ), ], ), ), body: pages[pageIndex], ); } } class RepoListPage extends StatelessWidget { final SavedUser user; const RepoListPage({Key? key, required this.user}) : super(key: key); @override Widget build(BuildContext context) { return BlocProvider( create: (_) => RepoBloc(giteaService: GiteaService(apiAccess: user.apiAccess)) ..add(RepoFetched()), child: ReposList( user: user, )); } }