पैकेज, रिपॉज़िटरी और ऐप श्रेणियाँ खोजें

पैकेज विवरणv0.5.0

value_layout_builder

एक अतिरिक्त मान के साथ LayoutBuilder। जब आप लेआउट के दौरान गणना की गई एक मान के साथ विजेट बनाना चाहते हैं, तो यह उपयोगी होता है।

AndroidiOSWebmacOSWindowsLinux
30-दिन डाउनलोड
3.3 लाख
लाइक
20
Pub अंक
150

पैकेज इंस्टॉल करें

flutter pub add value_layout_builder

पैकेज अवलोकन

सार्वजनिक जानकारी से बना चयन मार्गदर्शन। केवल संदर्भ हेतु।

एक LayoutBuilder विस्तार जो लेआउट प्रक्रिया के दौरान एक अतिरिक्त मान प्रदान करता है। यह विभिन्न विजेट्स को लेआउट सीमाओं के प्रति गतिशील रूप से प्रतिक्रिया करने और उन सीमाओं से निकाले गए गणना मान तक पहुँचने की अनुमति देता है। यह उत्तरदायी डिजाइन के लिए विशेष रूप से उपयोगी है जहां आकार और कस्टम तर्क दोनों को एक साथ विचार करने की आवश्यकता होती है। पैकेज लेआउट जागरूकता को राज्य-आधारित गणना के साथ जोड़कर लचीलापन को बढ़ाता है, जिससे यह जटिल UI घटकों के लिए आदर्श बन जाता है जो आयामों और गणना डेटा दोनों पर निर्भर करते हैं।

उपयोग

  • गणना मानों के साथ प्रतिक्रियाशील लेआउट
  • सीमाओं के आधार पर डायनामिक विजेट साइज़िंग
  • लेआउट-संवेदनशील तर्क की आवश्यकता वाले जटिल UI घटक
  • लेआउट परिवर्तनों से जुड़े कस्टम एनीमेशन
  • आंतरिक तर्क के साथ पुन: उपयोगी लेआउट विजेट बनाना

मुख्य विशेषताएँ

  • LayoutBuilder के साथ अतिरिक्त मान के साथ विस्तारित
  • लेआउट के दौरान गतिशील मान गणना का समर्थन करता है
  • संदर्भ-संवेदनशील तर्क के साथ प्रतिक्रियाशील डिज़ाइन सक्षम करता है
  • न्यूनतम बॉलरप्लेट
  • सभी फ्लटर प्लेटफॉर्म पर काम करता है

इनके लिए उपयुक्त

  • अनुकूल उपयोगकर्ता इंटरफेस विकसित करने वाले विकासकर्मी
  • लेआउट संदर्भ की आवश्यकता वाले UI घटक निर्माता
  • प्रतिक्रियाशील और गतिशील लेआउट की आवश्यकता वाले प्रोजेक्ट
  • कार्यात्मक या घोषित यूआई पैटर्न का उपयोग करने वाली टीमें

विचार योग्य बातें

  • Flutter के लेआउट चरण की समझ की आवश्यकता है
  • सरल लेआउट के लिए जटिलता जोड़ सकता है
  • स्थिर या गैर-प्रतिक्रियाशील डिज़ाइन के लिए उपयुक्त नहीं
  • यदि मूल्य गणना भारी है, तो प्रभाव
  • लेआउट-बिल्डिंग संदर्भों में उपयोग के लिए सीमित

मूल README

संबंधित सोर्स रिपॉज़िटरी के मूल README का स्नैपशॉट। नवीनतम सामग्री के लिए रिपॉज़िटरी देखें।

value_layout_builder

Pub

A LayoutBuilder with an extra value. It's useful when you want to build a widget with a value computed during layout.

Features

  • ValueLayoutBuilder - The RenderBox version.
  • SliverValueLayoutBuilder - The RenderSliver version.

Getting started

In the pubspec.yaml of your flutter project, add the following dependency:

dependencies:
  ...
  value_layout_builder:

In your library add the following import:

import 'package:value_layout_builder/value_layout_builder.dart';

For help getting started with Flutter, view the online documentation.

Usage

ValueLayoutBuilder and SliverValueLayoutBuilder will pair with a custom RenderObject which accepts a one of them as a child.

For example it is used in flutter_sticky_header in order to know how much the header is hidden.

The typical usage is to expose a builder in the parameter of your widget's constructor which takes a BuildContext and the value you want to get from layout, and to pass it from your custom RenderObject.

The following code is a dumb example to show you how to use it:

class _Tester<T> extends SingleChildRenderObjectWidget {
  const _Tester({
    Key? key,
    required this.value,
    required Widget child,
  }) : super(key: key, child: child);

  final T value;

  @override
  _RenderTester<T> createRenderObject(BuildContext context) {
    return _RenderTester<T>(value: value);
  }

  @override
  void updateRenderObject(
    BuildContext context,
    _RenderTester<T> renderObject,
  ) {
    renderObject.value = value;
  }
}

class _RenderTester<T> extends RenderBox
    with RenderObjectWithChildMixin<RenderBox> {
  _RenderTester({
    required T value,
  }) : _value = value;

  T get value => _value;
  T _value;
  set value(T value) {
    if (_value != value) {
      _value = value;
      markNeedsLayout();
    }
  }

  @override
  void performLayout() {
    // We create a specific constraints with the value we want to pass to the builder.
    BoxValueConstraints<T> constraints = BoxValueConstraints<T>(
      constraints: this.constraints,
      value: value,
    );
    child.layout(constraints);
    size = constraints.biggest;
  }

  @override
  void paint(PaintingContext context, Offset offset) {
    context.paintChild(child, offset);
  }
}

We can then use _Tester<T> like this:

_Tester<String>(
  value: 'test',
  child: ValueLayoutBuilder<String>(
    builder: (context, constraints) {
      // The constraints holds the String value.
      final String value = constraints.value;
      return Text(value);
    },
  ),
)

Sponsoring

I'm working on my packages on my free-time, but I don't have as much time as I would. If this package or any other package I created is helping you, please consider to sponsor me. By doing so, I will prioritize your issues or your pull-requests before the others.

Changelog

Please see the Changelog page to know what's recently changed.

Contributions

Feel free to contribute to this project.

If you find a bug or want a feature, but don't know how to fix/implement it, please fill an issue.
If you fixed a bug or implemented a feature, please send a pull request.

श्रेणियाँ

सोर्स रिपॉज़िटरी

इस पैकेज का उपयोग करने वाले प्रोजेक्ट