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

पैकेज विवरणv2.0.1

mobile_sidebar

मैटेरियल डिज़ाइन का पालन करने वाला फ्लटर के लिए एक प्रतिक्रियाशील साइडबार

30-दिन डाउनलोड
27
लाइक
31
Pub अंक
40

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

flutter pub add mobile_sidebar

पैकेज अवलोकन

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

फ्लटर के लिए एक प्रतिक्रियाशील साइडबार जो मैटेरियल डिज़ाइन दिशानिर्देशों का पालन करता है। यह स्क्रीन के आकार के आधार पर लेआउट को स्वचालित रूप से अनुकूलित करता है, उपकरणों के बीच आदर्श नेविगेशन अनुभव प्रदान करता है। निरंतर और उपलब्ध नेविगेशन की आवश्यकता वाले ऐप्स के लिए आदर्श, यह मोबाइल और डेस्कटॉप लेआउट दोनों का समर्थन करता है और चिकनी ट्रांज़िशन के साथ आता है। पैकेज डिज़ाइन विश्वसनीयता या उपयोगकर्ता अनुभव के बिना घुमावदार साइडबार के कार्यान्वयन को सरल बनाता है।

उपयोग

  • मोबाइल और डेस्कटॉप ऐप नेविगेशन
  • अनुकूलित लेआउट के साथ प्रतिक्रियाशील यूआई
  • उपकरणों के बीच सुसंगत ड्रॉअर अनुभव
  • Material Design नेविगेशन पैटर्न को एकीकृत करना
  • साइडबार मेनू के साथ प्रशासन डैशबोर्ड बनाएं

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

  • Material Design के अनुरूप
  • स्क्रीन आकार के अनुसार स्वचालित अनुकूलन
  • संक्षिप्त और विस्तारित अवस्था
  • स्मूथ ट्रांजिशन एनीमेशन
  • मौजूदा Flutter एप्लिकेशन के साथ आसान एकीकरण

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

  • प्रतिक्रियाशील Flutter एप्लिकेशन बनाने वाले डेवलपर्स
  • मैटेरियल डिज़ाइन सामंजस्य को प्राथमिकता देने वाली टीमें
  • अनुकूल नेविगेशन संरचना की आवश्यकता वाले प्रोजेक्ट
  • कई डिवाइस फॉर्म फैक्टर को लक्षित ऐप्स

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

  • Material Design के बाहर सीमित कस्टमाइजेशन
  • RTL लेआउट के लिए कोई निर्मित समर्थन नहीं है
  • अवस्था प्रबंधन के लिए हस्तक्षेप आवश्यक है
  • जटिल नेस्टेड नेविगेशन के लिए अनअप्टिमाइज़्ड

मूल README

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

Buy Me A Coffee Donate

mobile_sidebar

A Flutter plugin to show a sidebar on tablet and desktop then a list or gridview on mobile.

Demo here.

Screenshots

Example

import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart';

import 'package:mobile_sidebar/mobile_sidebar.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      theme: ThemeData.light(),
      home: HomeScreen(),
    );
  }
}

class HomeScreen extends StatefulWidget {
  @override
  _HomeScreenState createState() => _HomeScreenState();
}

class _HomeScreenState extends State<HomeScreen> {
  int index = 0;
  bool searching = false;
  bool _loggedIn = false;
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: MobileSidebar(
        currentIndex: index,
        onTabChanged: (val) {
          if (mounted)
            setState(() {
              index = val;
            });
        },
        isSearching: searching,
        isSearchChanged: (val) {
          if (mounted)
            setState(() {
              searching = val;
            });
        },
        titleBuilder: (context) {
          return FancyTitle(
            title: Text("My Logo"),
            logo: FlutterLogo(),
          );
        },
        accountBuilder: (context) {
          if (_loggedIn) {
            return Padding(
              padding: const EdgeInsets.all(8.0),
              child: InkWell(
                onTap: () {
                  if (mounted)
                    setState(() {
                      _loggedIn = false;
                    });
                },
                child: CircleAvatar(
                  child: Icon(Icons.person),
                ),
              ),
            );
          }
          return FlatButton(
            child: Text("Sign In"),
            onPressed: () {
              if (mounted)
                setState(() {
                  _loggedIn = true;
                });
            },
          );
        },
        showSearchButton: true,
        tabs: <TabChild>[
          TabChild(
            icon: Icon(Icons.bluetooth),
            title: 'Light Blue',
            builder: (context) => NewScreen(
              color: Colors.lightBlue,
              name: 'Light Blue Screen',
            ),
          ),
          TabChild(
            icon: Icon(Icons.info),
            title: 'Light Green',
            builder: (context) => NewScreen(
              color: Colors.lightGreen,
              name: 'Light Green Screen',
            ),
          ),
          TabChild(
            icon: Icon(Icons.person),
            title: 'Red',
            builder: (context) => NewScreen(
              color: Colors.red,
              name: 'Red Screen',
            ),
          ),
          TabChild(
            icon: Icon(Icons.info),
            title: 'Light Green 3',
            builder: (context) => NewScreen(
              color: Colors.lightGreen,
              name: 'Light Green Screen',
            ),
          ),
          TabChild(
            icon: Icon(Icons.person),
            title: 'Red 3',
            builder: (context) => NewScreen(
              color: Colors.red,
              name: 'Red Screen',
            ),
          ),
          TabChild(
            icon: Icon(Icons.info),
            title: 'Light Green 4',
            builder: (context) => NewScreen(
              color: Colors.lightGreen,
              name: 'Light Green Screen',
            ),
          ),
          TabChild(
            icon: Icon(Icons.person),
            title: 'Red 4',
            builder: (context) => NewScreen(
              color: Colors.red,
              name: 'Red Screen',
            ),
          ),
        ],
      ),
    );
  }
}

class FancyTitle extends StatelessWidget {
  const FancyTitle({
    Key key,
    @required this.title,
    this.logo,
  }) : super(key: key);

  final Widget title;
  final Widget logo;

  @override
  Widget build(BuildContext context) {
    if (logo == null) {
      return logo;
    }
    return Row(
      children: <Widget>[
        logo,
        Container(width: 4.0),
        title,
      ],
    );
  }
}

class NewScreen extends StatelessWidget {
  const NewScreen({
    Key key,
    @required this.color,
    @required this.name,
  }) : super(key: key);

  final Color color;
  final String name;

  @override
  Widget build(BuildContext context) {
    return Container(
      color: color,
      child: Center(
        child: RaisedButton.icon(
          icon: Icon(Icons.arrow_right),
          label: Text("Push to Screen"),
          onPressed: () {
            Navigator.of(context).push(MaterialPageRoute(
              builder: (_) => Scaffold(
                appBar: AppBar(),
                body: NewScreen(color: color, name: name),
              ),
            ));
          },
        ),
      ),
    );
  }
}

श्रेणियाँ

निर्भरताएँ

निर्भरता सूची 1 आइटम

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

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

अभी कोई डेटा उपलब्ध नहीं है।