macos_ui_widgets 0.0.6
macos_ui_widgets: ^0.0.6 copied to clipboard
Extra widgets for macos ui, based on the <a href='https://pub.dev/packages/macos_ui'>macos_ui</a> library.
import 'dart:io';
import 'package:example/pages/popup_page.dart';
import 'package:example/pages/tab2_page.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/foundation.dart';
import 'package:macos_ui/macos_ui.dart';
import 'package:provider/provider.dart';
import 'theme.dart';
/// This method initializes macos_window_utils and styles the window.
Future<void> _configureMacosWindowUtils() async {
const config = MacosWindowUtilsConfig();
await config.apply();
}
Future<void> main() async {
if (!kIsWeb) {
if (Platform.isMacOS) {
await _configureMacosWindowUtils();
}
}
runApp(const MacosUIGalleryApp());
}
class MacosUIGalleryApp extends StatelessWidget {
const MacosUIGalleryApp({super.key});
@override
Widget build(BuildContext context) {
return ChangeNotifierProvider(
create: (_) => AppTheme(),
builder: (context, _) {
final appTheme = context.watch<AppTheme>();
return MacosApp(
title: 'macos_ui Widget Gallery',
themeMode: appTheme.mode,
debugShowCheckedModeBanner: false,
home: const WidgetGallery(),
);
},
);
}
}
class WidgetGallery extends StatefulWidget {
const WidgetGallery({super.key});
@override
State<WidgetGallery> createState() => _WidgetGalleryState();
}
class _WidgetGalleryState extends State<WidgetGallery> {
int pageIndex = 0;
late final searchFieldController = TextEditingController();
@override
Widget build(BuildContext context) {
return PlatformMenuBar(
menus: const [],
child: MacosWindow(
sidebar: Sidebar(
minWidth: 200,
builder: (context, scrollController) {
return SidebarItems(
currentIndex: pageIndex,
onChanged: (i) {
setState(() => pageIndex = i);
},
scrollController: scrollController,
itemSize: SidebarItemSize.large,
items: const [
SidebarItem(label: Text('Tab2')),
SidebarItem(label: Text('Buttons2')),
],
);
},
bottom: const MacosListTile(
leading: MacosIcon(CupertinoIcons.profile_circled),
title: Text('Tim Apple'),
subtitle: Text('tim@apple.com'),
),
),
endSidebar: Sidebar(
startWidth: 200,
minWidth: 200,
maxWidth: 300,
shownByDefault: false,
builder: (context, _) {
return const Center(
child: Text('End Sidebar'),
);
},
),
child: [
CupertinoTabView(builder: (_) => const TabView2Page()),
const PopupButton2Page(),
][pageIndex],
),
);
}
}