parent
be30bcb7d8
commit
54a2d71891
|
@ -32,10 +32,7 @@ class _HomeState extends State<Home> {
|
|||
final GlobalKey<NavigatorState> tab3 = GlobalKey<NavigatorState>();
|
||||
final GlobalKey<NavigatorState> tab4 = GlobalKey<NavigatorState>();
|
||||
final GlobalKey<NavigatorState> tab5 = GlobalKey<NavigatorState>();
|
||||
|
||||
final List<Widget> screens = List<Widget>();
|
||||
|
||||
int active = 0;
|
||||
final CupertinoTabController _controller = CupertinoTabController();
|
||||
|
||||
_buildScreen(int index) {
|
||||
// return GlProjectScreen(32221);
|
||||
|
@ -44,7 +41,6 @@ class _HomeState extends State<Home> {
|
|||
// return IssueScreen('reactjs', 'rfcs', 68, isPullRequest: true);
|
||||
// return Image.asset('images/spinner.webp', width: 32, height: 32);
|
||||
final auth = Provider.of<AuthModel>(context);
|
||||
|
||||
switch (auth.activeAccount.platform) {
|
||||
case PlatformType.github:
|
||||
switch (index) {
|
||||
|
@ -203,11 +199,28 @@ class _HomeState extends State<Home> {
|
|||
Widget build(BuildContext context) {
|
||||
final theme = Provider.of<ThemeModel>(context);
|
||||
final auth = Provider.of<AuthModel>(context);
|
||||
final CupertinoTabController _controller = CupertinoTabController();
|
||||
|
||||
if (auth.activeAccount == null) {
|
||||
return LoginScreen();
|
||||
}
|
||||
|
||||
switch (auth.activeAccount.platform) {
|
||||
case PlatformType.github:
|
||||
theme.setActiveTab(theme.startTabGh);
|
||||
break;
|
||||
case PlatformType.gitlab:
|
||||
theme.setActiveTab(theme.startTabGl);
|
||||
break;
|
||||
case PlatformType.bitbucket:
|
||||
theme.setActiveTab(theme.startTabBb);
|
||||
break;
|
||||
case PlatformType.gitea:
|
||||
theme.setActiveTab(theme.startTabGt);
|
||||
break;
|
||||
}
|
||||
|
||||
_controller.index = theme.active;
|
||||
|
||||
switch (theme.theme) {
|
||||
case AppThemeType.cupertino:
|
||||
return WillPopScope(
|
||||
|
@ -227,25 +240,54 @@ class _HomeState extends State<Home> {
|
|||
},
|
||||
tabBar: CupertinoTabBar(
|
||||
items: _navigationItems,
|
||||
currentIndex: _controller.index,
|
||||
onTap: (index) {
|
||||
if (active == index) {
|
||||
if (theme.active == index) {
|
||||
getNavigatorKey(index)
|
||||
.currentState
|
||||
.popUntil((route) => route.isFirst);
|
||||
}
|
||||
active = index;
|
||||
theme.setActiveTab(index);
|
||||
switch (auth.activeAccount.platform) {
|
||||
case PlatformType.github:
|
||||
theme.setDefaultStartTabGh(index);
|
||||
break;
|
||||
case PlatformType.gitlab:
|
||||
theme.setDefaultStartTabGl(index);
|
||||
break;
|
||||
case PlatformType.bitbucket:
|
||||
theme.setDefaultStartTabBb(index);
|
||||
break;
|
||||
case PlatformType.gitea:
|
||||
theme.setDefaultStartTabGt(index);
|
||||
break;
|
||||
}
|
||||
})));
|
||||
default:
|
||||
return Scaffold(
|
||||
body: _buildScreen(active),
|
||||
body: _buildScreen(theme.active),
|
||||
bottomNavigationBar: BottomNavigationBar(
|
||||
selectedItemColor: theme.palette.primary,
|
||||
items: _navigationItems,
|
||||
currentIndex: active,
|
||||
currentIndex: theme.active,
|
||||
type: BottomNavigationBarType.fixed,
|
||||
onTap: (int index) {
|
||||
switch (auth.activeAccount.platform) {
|
||||
case PlatformType.github:
|
||||
theme.setDefaultStartTabGh(index);
|
||||
break;
|
||||
case PlatformType.gitlab:
|
||||
theme.setDefaultStartTabGl(index);
|
||||
break;
|
||||
case PlatformType.bitbucket:
|
||||
theme.setDefaultStartTabBb(index);
|
||||
break;
|
||||
case PlatformType.gitea:
|
||||
theme.setDefaultStartTabGt(index);
|
||||
break;
|
||||
}
|
||||
setState(() {
|
||||
active = index;
|
||||
theme.setActiveTab(index);
|
||||
});
|
||||
},
|
||||
),
|
||||
|
|
|
@ -104,7 +104,6 @@ class ThemeModel with ChangeNotifier {
|
|||
|
||||
Brightness systemBrightness = Brightness.light;
|
||||
void setSystemBrightness(Brightness v) {
|
||||
// print('systemBrightness: $v');
|
||||
if (v != systemBrightness) {
|
||||
Future.microtask(() {
|
||||
systemBrightness = v;
|
||||
|
@ -116,6 +115,59 @@ class ThemeModel with ChangeNotifier {
|
|||
int _brightnessValue = AppBrightnessType.followSystem;
|
||||
int get brighnessValue => _brightnessValue;
|
||||
|
||||
Future<void> setActiveTab(int v) async {
|
||||
_activeTab = v;
|
||||
Fimber.d('write active tab: $v');
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
int _activeTab = 0;
|
||||
int get active => _activeTab;
|
||||
|
||||
int _defaultStartTabGh = 0;
|
||||
int get startTabGh => _defaultStartTabGh;
|
||||
|
||||
Future<void> setDefaultStartTabGh(int v) async {
|
||||
_defaultStartTabGh = v;
|
||||
final prefs = await SharedPreferences.getInstance();
|
||||
await prefs.setInt(StorageKeys.defaultStartTabGh, v);
|
||||
Fimber.d('write default start tab for github: $v');
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
int _defaultStartTabGl = 0;
|
||||
int get startTabGl => _defaultStartTabGl;
|
||||
|
||||
Future<void> setDefaultStartTabGl(int v) async {
|
||||
_defaultStartTabGl = v;
|
||||
final prefs = await SharedPreferences.getInstance();
|
||||
await prefs.setInt(StorageKeys.defaultStartTabGl, v);
|
||||
Fimber.d('write default start tab for gitlab: $v');
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
int _defaultStartTabBb = 0;
|
||||
int get startTabBb => _defaultStartTabBb;
|
||||
|
||||
Future<void> setDefaultStartTabBb(int v) async {
|
||||
_defaultStartTabBb = v;
|
||||
final prefs = await SharedPreferences.getInstance();
|
||||
await prefs.setInt(StorageKeys.defaultStartTabBb, v);
|
||||
Fimber.d('write default start tab for bitbucket: $v');
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
int _defaultStartTabGt = 0;
|
||||
int get startTabGt => _defaultStartTabGt;
|
||||
|
||||
Future<void> setDefaultStartTabGt(int v) async {
|
||||
_defaultStartTabGt = v;
|
||||
final prefs = await SharedPreferences.getInstance();
|
||||
await prefs.setInt(StorageKeys.defaultStartTabGt, v);
|
||||
Fimber.d('write default start tab for gitea: $v');
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
// could be null
|
||||
Brightness get brightness {
|
||||
switch (_brightnessValue) {
|
||||
|
@ -183,6 +235,14 @@ class ThemeModel with ChangeNotifier {
|
|||
if (AppBrightnessType.values.contains(b)) {
|
||||
_brightnessValue = b;
|
||||
}
|
||||
final dGh = prefs.getInt(StorageKeys.defaultStartTabGh);
|
||||
_defaultStartTabGh = dGh;
|
||||
final dGl = prefs.getInt(StorageKeys.defaultStartTabGl);
|
||||
_defaultStartTabGl = dGl;
|
||||
final dBb = prefs.getInt(StorageKeys.defaultStartTabBb);
|
||||
_defaultStartTabBb = dBb;
|
||||
final dGt = prefs.getInt(StorageKeys.defaultStartTabGt);
|
||||
_defaultStartTabGt = dGt;
|
||||
|
||||
notifyListeners();
|
||||
}
|
||||
|
|
|
@ -26,6 +26,10 @@ class StorageKeys {
|
|||
static const codeThemeDark = 'code-theme-dark';
|
||||
static const iCodeFontSize = 'code-font-size';
|
||||
static const codeFontFamily = 'code-font-family';
|
||||
static const defaultStartTabGh = 'default-start-tab-github';
|
||||
static const defaultStartTabGl = 'default-start-tab-gitlab';
|
||||
static const defaultStartTabBb = 'default-start-tab-bitbucket';
|
||||
static const defaultStartTabGt = 'default-start-tab-gitea';
|
||||
}
|
||||
|
||||
class CommonStyle {
|
||||
|
|
Loading…
Reference in New Issue