From 0fc3023c4c5ca491ed96e6ba07cd8de2eff8f642 Mon Sep 17 00:00:00 2001 From: luoyz Date: Tue, 24 Oct 2023 14:42:00 +0800 Subject: [PATCH] chore: compatible with build() in framework --- README.md | 26 +++----------------------- example/lib/main.dart | 6 +++--- example/pubspec.lock | 2 +- image/fc.jpg | Bin 68276 -> 0 bytes lib/src/fc.dart | 6 +++--- pubspec.yaml | 2 +- test/shim_test.dart | 2 +- 7 files changed, 12 insertions(+), 32 deletions(-) delete mode 100644 image/fc.jpg diff --git a/README.md b/README.md index 7d48249..19d765f 100644 --- a/README.md +++ b/README.md @@ -17,23 +17,12 @@ An easy way to create Functional Components (FC) in Flutter, with composable hoo - 🧱 Hot reload - ⚛️ React style friendly -![About 50% shrink](./image/fc.jpg) - ## Install ```yaml dependencies: flutter_fc: ``` -> -> If need destructuring. Dart 3 or greater version is required. -> https://dart.dev/resources/dart-3-migration -> -> ```yaml -> environment: -> sdk: '^>=3.0.3 <4.0.0' -> ``` - ## Quick Example @@ -46,7 +35,7 @@ class Counter extends FCWidget { const Counter({super.key}); @override - Widget build() { + Widget build(BuildContext context) { final (counter, setCounter) = useState(0); return ElevatedButton( onPressed: () => setCounter(counter + 1), @@ -75,7 +64,7 @@ Currently supports these hooks as following: ### useState ```dart -// Dart 3 +// Dart >= 3 final (flag, setFlag) = useState(false); // Dart >= 2.12 < 3.0.0 @@ -123,15 +112,6 @@ useImperativeHandle(reloadRef, () { reloadRef.current?.call(); ``` -### useBuildContext - -Retrieve current FC context - -```dart -final context = useBuildContext(); -final theme = Theme.of(context); -``` - ## Development Tips ### Define Reusable Widgets @@ -142,7 +122,7 @@ class Counter extends FCWidget { Counter({this.value, super.key}); @override - Widget build() { + Widget build(BuildContext context) { final (counter, setCounter) = useState(value ?? 0); useEffect(() => setCounter(value ?? 0), [value]); return Text("Counter: $counter""); diff --git a/example/lib/main.dart b/example/lib/main.dart index 7333999..c12bdd8 100644 --- a/example/lib/main.dart +++ b/example/lib/main.dart @@ -13,7 +13,7 @@ class CounterScreen extends FCWidget { const CounterScreen({super.key}); @override - Widget build() { + Widget build(BuildContext context) { // sdk 2.x interop // final (counter, setCounter) = useState(0); final state = useState(0); @@ -36,7 +36,7 @@ class ErrorTestScreen extends FCWidget { const ErrorTestScreen({super.key}); @override - Widget build() { + Widget build(BuildContext context) { flag++; final value = flag > 1 ? useMemo(() => 1, []) : useRef(0).current; return Text("$value"); @@ -68,7 +68,7 @@ class OverlayHierScreen extends FCWidget { const OverlayHierScreen({super.key}); @override - Widget build() { + Widget build(BuildContext context) { // sdk 2.x interop // final (counter, setCounter) = useState(0); final state = useState(0); diff --git a/example/pubspec.lock b/example/pubspec.lock index cf32f13..69460ca 100644 --- a/example/pubspec.lock +++ b/example/pubspec.lock @@ -68,7 +68,7 @@ packages: path: ".." relative: true source: path - version: "0.3.0" + version: "0.3.1" flutter_lints: dependency: "direct dev" description: diff --git a/image/fc.jpg b/image/fc.jpg deleted file mode 100644 index 285b9dc3d8a13af7d10c1d7c425111870cdb5960..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 68276 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 extends Widget implements _FCWidget { Element createElement() => _FCElement<_FCPropsWidget>(this); @override - Widget build() => builder(props, ref); + Widget build(BuildContext context) => builder(props, ref); } /// [StatelessElement] @@ -287,7 +287,7 @@ class _FCElement extends ComponentElement _kCurrentDispatcher = _FcUpdateDispatcher(this); } try { - final built = widget.build(); + final built = widget.build(this); memoizedHooks = _kCurrentDispatcher!.memoizedHooks; return built; } catch (e) { @@ -300,7 +300,7 @@ class _FCElement extends ComponentElement } abstract class _FCWidget implements Widget { - Widget build(); + Widget build(BuildContext context); } class FCType implements Type { diff --git a/pubspec.yaml b/pubspec.yaml index 7e1dd9b..eb26791 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,6 +1,6 @@ name: flutter_fc description: Writing Function Component in Flutter, just as writing in React. -version: 0.3.1 +version: 0.4.0 homepage: https://github.com/luo3house/flutter_fc environment: diff --git a/test/shim_test.dart b/test/shim_test.dart index e3f3e77..2527508 100644 --- a/test/shim_test.dart +++ b/test/shim_test.dart @@ -7,7 +7,7 @@ class _MyFCWidget extends FCWidget { const _MyFCWidget(this.name); @override - Widget build() { + Widget build(BuildContext context) { final (text, setText) = useState(null); final greetings = useMemo(() => "Hello $name", [name]); useEffect(() {