From ed40eaaa3159553e182fc8ddea0ea3e85c872da4 Mon Sep 17 00:00:00 2001 From: Kingkor Roy Tirtho Date: Wed, 5 Oct 2022 22:37:37 +0600 Subject: [PATCH] feat: pass context to platform specific methods --- example/lib/main.dart | 2 +- lib/src/platform_app.dart | 12 ++++++------ lib/src/platform_filled_button.dart | 14 +++++++------- lib/src/platform_icon_button.dart | 12 ++++++------ lib/src/platform_mixin.dart | 25 ++++++++++++------------- lib/src/platform_scaffold.dart | 14 +++++++------- lib/src/platform_text_button.dart | 14 +++++++------- 7 files changed, 46 insertions(+), 47 deletions(-) diff --git a/example/lib/main.dart b/example/lib/main.dart index 673c250..c29568a 100644 --- a/example/lib/main.dart +++ b/example/lib/main.dart @@ -10,7 +10,7 @@ class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { - platform = TargetPlatform.windows; + platform = TargetPlatform.android; return const PlatformApp( title: 'Flutter Demo', home: MyHomePage(title: 'Flutter Demo Home Page'), diff --git a/lib/src/platform_app.dart b/lib/src/platform_app.dart index f9e8cef..2c164f1 100644 --- a/lib/src/platform_app.dart +++ b/lib/src/platform_app.dart @@ -94,7 +94,7 @@ class PlatformApp extends StatelessWidget with PlatformMixin { }) : super(key: key); @override - Widget android() { + Widget android(context) { return MaterialApp( navigatorKey: navigatorKey, scaffoldMessengerKey: scaffoldMessengerKey, @@ -134,7 +134,7 @@ class PlatformApp extends StatelessWidget with PlatformMixin { } @override - Widget ios() { + Widget ios(context) { return CupertinoApp( navigatorKey: navigatorKey, home: home, @@ -168,12 +168,12 @@ class PlatformApp extends StatelessWidget with PlatformMixin { } @override - Widget linux() { - return android(); + Widget linux(context) { + return android(context); } @override - Widget macos() { + Widget macos(context) { return MacosApp( navigatorKey: navigatorKey, home: home, @@ -208,7 +208,7 @@ class PlatformApp extends StatelessWidget with PlatformMixin { } @override - Widget windows() { + Widget windows(context) { return FluentApp( navigatorKey: navigatorKey, home: home, diff --git a/lib/src/platform_filled_button.dart b/lib/src/platform_filled_button.dart index 6533bae..f990f64 100644 --- a/lib/src/platform_filled_button.dart +++ b/lib/src/platform_filled_button.dart @@ -44,7 +44,7 @@ class PlatformFilledButton extends StatelessWidget with PlatformMixin { Set get allStates => Utils.allMaterialStates; @override - Widget android() { + Widget android(context) { return MouseRegion( onHover: onHover, cursor: mouseCursor, @@ -70,7 +70,7 @@ class PlatformFilledButton extends StatelessWidget with PlatformMixin { } @override - Widget ios() { + Widget ios(context) { return ClipRect( clipBehavior: clipBehavior, child: Focus( @@ -100,12 +100,12 @@ class PlatformFilledButton extends StatelessWidget with PlatformMixin { } @override - Widget linux() { - return android(); + Widget linux(context) { + return android(context); } @override - Widget macos() { + Widget macos(context) { return ClipRect( clipBehavior: clipBehavior, child: Focus( @@ -138,7 +138,7 @@ class PlatformFilledButton extends StatelessWidget with PlatformMixin { } @override - Widget windows() { + Widget windows(context) { return ClipRect( clipBehavior: clipBehavior, child: MouseRegion( @@ -192,7 +192,7 @@ class PlatformFilledButton extends StatelessWidget with PlatformMixin { } @override - Widget build(BuildContext context) { + Widget build(context) { return getPlatformType(context); } } diff --git a/lib/src/platform_icon_button.dart b/lib/src/platform_icon_button.dart index 68f8445..48015e7 100644 --- a/lib/src/platform_icon_button.dart +++ b/lib/src/platform_icon_button.dart @@ -47,7 +47,7 @@ class PlatformIconButton extends StatelessWidget with PlatformMixin { }) : super(key: key); @override - Widget android() { + Widget android(context) { return IconButton( iconSize: iconSize, visualDensity: visualDensity, @@ -77,7 +77,7 @@ class PlatformIconButton extends StatelessWidget with PlatformMixin { } @override - Widget ios() { + Widget ios(context) { final cupertinoButton = CupertinoButton( alignment: alignment, onPressed: onPressed, @@ -103,12 +103,12 @@ class PlatformIconButton extends StatelessWidget with PlatformMixin { } @override - Widget linux() { - return android(); + Widget linux(context) { + return android(context); } @override - Widget macos() { + Widget macos(context) { return Focus( focusNode: focusNode, autofocus: autofocus, @@ -138,7 +138,7 @@ class PlatformIconButton extends StatelessWidget with PlatformMixin { } @override - Widget windows() { + Widget windows(context) { return Align( alignment: alignment, child: FluentUI.Tooltip( diff --git a/lib/src/platform_mixin.dart b/lib/src/platform_mixin.dart index e2fcddb..8f7febe 100644 --- a/lib/src/platform_mixin.dart +++ b/lib/src/platform_mixin.dart @@ -4,27 +4,26 @@ import 'package:flutter/material.dart'; TargetPlatform? platform; mixin PlatformMixin { - T android(); - T ios(); - T macos(); - T windows(); - T linux(); + T android(BuildContext context); + T ios(BuildContext context); + T macos(BuildContext context); + T windows(BuildContext context); + T linux(BuildContext context); T getPlatformType(BuildContext context) { - if (kIsWeb) return android(); + if (kIsWeb) return android(context); switch (platform ?? defaultTargetPlatform) { - case TargetPlatform.android: - return android(); case TargetPlatform.iOS: - return ios(); + return ios(context); case TargetPlatform.macOS: - return macos(); + return macos(context); case TargetPlatform.windows: - return windows(); + return windows(context); case TargetPlatform.linux: - return linux(); + return linux(context); + case TargetPlatform.android: default: - return android(); + return android(context); } } } diff --git a/lib/src/platform_scaffold.dart b/lib/src/platform_scaffold.dart index 648588a..2b1f325 100644 --- a/lib/src/platform_scaffold.dart +++ b/lib/src/platform_scaffold.dart @@ -58,7 +58,7 @@ class PlatformScaffold extends StatelessWidget with PlatformMixin { this.restorationId, }) : super(key: key); @override - Widget android() { + Widget android(context) { return Scaffold( extendBody: extendBody, extendBodyBehindAppBar: extendBodyBehindAppBar, @@ -88,7 +88,7 @@ class PlatformScaffold extends StatelessWidget with PlatformMixin { } @override - Widget ios() { + Widget ios(context) { return CupertinoPageScaffold( // TODO: Do something for [CuopertinoNavBar] backgroundColor: backgroundColor, @@ -99,12 +99,12 @@ class PlatformScaffold extends StatelessWidget with PlatformMixin { } @override - Widget linux() { - return android(); + Widget linux(context) { + return android(context); } @override - Widget macos() { + Widget macos(context) { return MacosScaffold( // TODO: Do something for [macOS ToolBar] toolBar: null, @@ -118,8 +118,8 @@ class PlatformScaffold extends StatelessWidget with PlatformMixin { } @override - Widget windows() { - return android(); + Widget windows(context) { + return android(context); } @override diff --git a/lib/src/platform_text_button.dart b/lib/src/platform_text_button.dart index d9939b0..6d9479a 100644 --- a/lib/src/platform_text_button.dart +++ b/lib/src/platform_text_button.dart @@ -45,7 +45,7 @@ class PlatformTextButton extends StatelessWidget with PlatformMixin { }; @override - Widget android() { + Widget android(context) { return MouseRegion( onHover: onHover, cursor: mouseCursor, @@ -71,7 +71,7 @@ class PlatformTextButton extends StatelessWidget with PlatformMixin { } @override - Widget ios() { + Widget ios(context) { return ClipRect( clipBehavior: clipBehavior, child: Focus( @@ -102,17 +102,17 @@ class PlatformTextButton extends StatelessWidget with PlatformMixin { } @override - Widget linux() { - return android(); + Widget linux(context) { + return android(context); } @override - Widget macos() { - return ios(); + Widget macos(context) { + return ios(context); } @override - Widget windows() { + Widget windows(context) { return ClipRect( clipBehavior: clipBehavior, child: MouseRegion(