Skip to content

Commit

Permalink
feat(linux): platform tab view add
Browse files Browse the repository at this point in the history
  • Loading branch information
KRTirtho committed Nov 6, 2022
1 parent ae71afa commit 5885032
Showing 1 changed file with 53 additions and 1 deletion.
54 changes: 53 additions & 1 deletion lib/src/platform_tab_view.dart
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:libadwaita/libadwaita.dart';
import 'package:libadwaita_core/libadwaita_core.dart';
import 'package:macos_ui/macos_ui.dart';
import 'package:platform_ui/platform_ui.dart';
import 'package:fluent_ui/fluent_ui.dart' as FluentUI;
Expand Down Expand Up @@ -147,6 +149,13 @@ class PlatformTab {
tileColor: color != null ? FluentUI.ButtonState.all(color) : null,
);
}

ViewSwitcherData linux(BuildContext context) {
return ViewSwitcherData(
title: label,
icon: icon is Icon ? (icon as Icon).icon : null,
);
}
}

class PlatformTabController extends ChangeNotifier {
Expand Down Expand Up @@ -348,7 +357,50 @@ class _PlatformTabViewState extends State<PlatformTabView>

@override
Widget linux(BuildContext context) {
return android(context);
final tabbar = AdwViewSwitcher(
policy: widget.placement?.linux == PlatformTabbarPlacement.bottom
? ViewSwitcherPolicy.narrow
: ViewSwitcherPolicy.wide,
currentIndex: currentIndex,
onViewChanged: (value) {
controller.index = value;
},
tabs: widget.body.keys.mapIndexed((i, e) => e.linux(context)).toList(),
);
return Scaffold(
appBar: widget.placement?.linux == PlatformTabbarPlacement.top
? PreferredSize(
preferredSize: const Size.fromHeight(kToolbarHeight),
child: AdwHeaderBar(
actions: AdwActions(),
title: Center(child: tabbar),
),
)
: null,
body: AdwViewStack(
index: currentIndex,
animationDuration: const Duration(milliseconds: 100),
children: widget.body.values.toList(),
),
bottomNavigationBar:
widget.placement?.linux == PlatformTabbarPlacement.bottom
? SizedBox.fromSize(
size: const Size.fromHeight(kToolbarHeight - 9),
child: Container(
decoration: BoxDecoration(
border: Border(
top: BorderSide(
color: Theme.of(context).dividerColor,
width: 1,
),
),
color: Theme.of(context).appBarTheme.backgroundColor,
),
child: Center(child: tabbar),
),
)
: null,
);
}

@override
Expand Down

0 comments on commit 5885032

Please sign in to comment.