پکیج flutter_bloc یکی از پرکاربردترین و معروف‌ترین پکیج‌ها برای مدیریت وضعیت در برنامه‌های فلاتر (Flutter) است. این پکیج به شما کمک می‌کند تا وضعیت‌های مختلف برنامه‌ی شما را به شیوه‌ای سازمان‌دهی شده و قابل‌پیش‌بینی مدیریت کنید. این رویکرد به نام "بلوک" (Bloc) معروف است.

بلوک یک الگوی معماری است که به شما کمک می‌کند تا برنامه‌هایتان را به چندین بخش تقسیم کرده و هر بخش را به شیوه‌ای جداگانه مدیریت کنید. در اینجا چند مفهوم اصلی در flutter_bloc توضیح داده شده‌اند:

Bloc (بلوک): بلوک مسئول مدیریت وضعیت بخش‌های مختلف برنامه است. یک بلوک معمولاً شامل دو قسمت اصلی است: ورودی‌ها (Events) و خروجی‌ها (States).

 

Event (رویداد): وقایعی هستند که تغییر وضعیت بلوک را ایجاد می‌کنند. مثلاً یک رویداد می‌تواند "دکمه فشرده شد" یا "اطلاعات جدید دریافت شد" باشد.

 

State (وضعیت): وضعیت فعلی بلوک را نمایش می‌دهد. هر وضعیت ممکن است ویژگی‌های مختلفی از برنامه را نمایش دهد.

 

BlocProvider: یک ویجت در flutter_bloc که مسئول ایجاد و فراهم کردن بلوک‌ها به قسمت‌های مختلف برنامه است.

 

مثال کاربردی از flutter_bloc:

import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';

// 1. تعریف رویداد‌ها
enum CounterEvent { increment, decrement }

// 2. تعریف بلوک
class CounterBloc extends Bloc<CounterEvent, int> {
  CounterBloc() : super(0);

  @override
  Stream<int> mapEventToState(CounterEvent event) async* {
    switch (event) {
      case CounterEvent.increment:
        yield state + 1;
        break;
      case CounterEvent.decrement:
        yield state - 1;
        break;
    }
  }
}

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: BlocProvider(
        create: (context) => CounterBloc(),
        child: MyHomePage(),
      ),
    );
  }
}

class MyHomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter Bloc Example'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            BlocBuilder<CounterBloc, int>(
              builder: (context, state) {
                return Text('Counter: $state');
              },
            ),
            SizedBox(height: 20),
            Row(
              mainAxisAlignment: MainAxisAlignment.center,
              children: [
                ElevatedButton(
                  onPressed: () {
                    // 3. ارسال رویداد به بلوک
                    context.read<CounterBloc>().add(CounterEvent.increment);
                  },
                  child: Icon(Icons.add),
                ),
                SizedBox(width: 20),
                ElevatedButton(
                  onPressed: () {
                    context.read<CounterBloc>().add(CounterEvent.decrement);
                  },
                  child: Icon(Icons.remove),
                ),
              ],
            ),
          ],
        ),
      ),
    );
  }
}

در این مثال، یک بلوک CounterBloc تعریف شده است که وضعیت را مدیریت می‌کند. برنامه شامل یک صفحه (MyHomePage) است که از BlocBuilder برای نمایش وضعیت بلوک و از دکمه‌ها برای ارسال رویداد به بلوک استفاده می‌کند.

 

مقالات مرتبط

نرم افزار مدیریت باسکول ( هوشمند )
نرم افزار مدیریت باسکول ( هوشمند )

سیستم مدیریت باسکول بارگو – هوشمندسازی توزین در کارخانه‌ها و معادن پشتیبانی از حالت آفلاین و آنلاین حتی در شرایط قطع اینترنت، سیستم بدون وقفه به کار خود ادامه داده و پس از برقراری ارتباط، اطلاعات را به‌طور کامل با سرور آنلاین همگام‌سازی می‌کند. قابلیت اتصال به انواع باسکول‌ها سازگاری کامل با باسکول‌های دیجیتال و آنالوگ، بدون نیاز به تغییرات سخت‌افزاری. تعاریف و تنظیمات پیشرفته امکان تعریف کالاها، مشتریان، رانندگان، وسایل نقلیه و اپراتورها با دسترسی‌های متفاوت. گزارش‌گیری دقیق و متنوع گزارشات وزنی روزانه، هفتگی و ماهانه گزارشات مالی و حسابداری گزارشات سفارشی بر اساس بازه زمانی و نوع کالا رابط کاربری ساده و کاربرپسند طراحی به گونه‌ای که اپراتور باسکول بتواند در کمترین زمان عملیات توزین را انجام دهد. هوش مصنوعی و پلاک‌خوان خودکار شناسایی لحظه‌ای پلاک خودرو هنگام ورود به باسکول ذخیره تصویر خودرو و پلاک در سیستم کاهش خطا و جلوگیری از ورود اطلاعات نادرست

3 ماه قبل نوشته شده

دیدگاهی برای این مطلب ثبت نشده است.