پرش به محتوا

آموزش ویجت BackdropFilter در فلاتر

    ویجت BackdropFilter در فلاتر به شما اجازه می‌دهد که یک پوشش برای ویجت مورد نظر ایجاد کنید. این پوشش شامل یک پس‌زمینه نیمه شفاف است که به ویجت اعمال می‌شود و محتوای آن را مات و نیمه شفاف می‌کند. این ویژگی به شما اجازه می‌دهد که یک اثر بصری متفاوت و جذاب ایجاد کنید.

    برای استفاده از ویجت BackdropFilter در فلاتر، ابتدا باید ویجتی که قصد دارید پوشش بگیرید را ایجاد کنید. سپس از کلاس BackdropFilter استفاده کرده و آن را به عنوان ویجت فرعی به ویجت اصلی خود اضافه کنید.

    در ادامه یک مثال ساده از استفاده از ویجت BackdropFilter در فلاتر را بررسی می‌کنیم:

    class MyWidget extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return Center(
          child: Stack(
            children: [
              // ویجت اصلی که قصد دارید پوشش بگیرید
              Container(
                width: 200,
                height: 200,
                color: Colors.blue,
                child: Center(
                  child: Text(
                    'My Widget',
                    style: TextStyle(
                      color: Colors.white,
                      fontSize: 24,
                      fontWeight: FontWeight.bold,
                    ),
                  ),
                ),
              ),
              // ویجت BackdropFilter
              BackdropFilter(
                filter: ImageFilter.blur(sigmaX: 5, sigmaY: 5),
                child: Container(
                  width: 200,
                  height: 200,
                  color: Colors.transparent,
                ),
              ),
            ],
          ),
        );
      }
    }
    
    

    در این مثال، ما یک ویجت اصلی از نوع Container با یک پس‌زمینه آبی ایجاد کرده‌ایم. سپس یک ویجت BackdropFilter ایجاد کرده‌ایم که فیلتر مربوط به آن را با استفاده از ImageFilter.blur تنظیم کرده‌ایم. سپس این ویجت را به عنوان ویجت فرعی به ویجت اصلی خود اضافه کرده‌ایم.

    با اجرای این کد، ویجت اصلی ما با یک پوشش نیمه شفاف و مات شده است و یک اثر با استفاده از اضافه کردن ویجت BackdropFilter به ویجت اصلی یک پوشش مات و نیمه شفاف بر روی ویجت اصلی ایجاد می‌شود. اما شما می‌توانید با تنظیمات مختلفی، این پوشش را به صورتی که می‌خواهید تغییر دهید.

    در BackdropFilter، می‌توانید از تنظیمات ImageFilter مختلفی استفاده کنید تا پوشش مات و نیمه شفاف را به صورت دلخواه تنظیم کنید. به عنوان مثال، می‌توانید پوشش را با استفاده از فیلتر ImageFilter.blur مات کنید یا از فیلتر ImageFilter.matrix برای ایجاد یک پوشش با اثر ماتریسی استفاده کنید.

    در اینجا یک مثال از استفاده از فیلتر ImageFilter.matrix را بررسی می‌کنیم:

    class MyWidget extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return Center(
          child: Stack(
            children: [
              // ویجت اصلی که قصد دارید پوشش بگیرید
              Container(
                width: 200,
                height: 200,
                color: Colors.blue,
                child: Center(
                  child: Text(
                    'My Widget',
                    style: TextStyle(
                      color: Colors.white,
                      fontSize: 24,
                      fontWeight: FontWeight.bold,
                    ),
                  ),
                ),
              ),
              // ویجت BackdropFilter با فیلتر ImageFilter.matrix
              BackdropFilter(
                filter: ImageFilter.matrix(<double>[
                  1, 0, 0, 0, 0,
                  0, 1, 0, 0, 0,
                  0, 0, 1, 0, 0,
                  0, 0, 0, 0.5, 0,
                ]),
                child: Container(
                  width: 200,
                  height: 200,
                  color: Colors.transparent,
                ),
              ),
            ],
          ),
        );
      }
    }
    
    

    در این مثال، ما پوشش را با استفاده از فیلتر ImageFilter.matrix تنظیم کرده‌ایم. با استفاده از ماتریس داده شده، ما پوشش را به صورتی تنظیم کرده‌ایم که تنها 50 درصد از محتوای ویجت اصلی نمایش داده می‌شود و بقیه از محتوای آن به صورت ماتریسی و نیمه شفاف نمایش داده می‌شود.

    می‌توانید با تغییر ارقام ماتریس، اثرات دیگری روی پوشش ایجاد کنید. به عنوان مثال، با استفاده از ماتریس زیر، پوششی با اثر تصویرسازی سه‌بعدی ایجاد می‌شود:

    BackdropFilter(
      filter: ImageFilter.matrix(<double>[
        1.2, 0, 0, 0, -30,
        0, 1.2, 0, 0, -30,
        0, 0, 1.2, 0, -30,
        0, 0, 0, 1, 0,
      ]),
      child: Container(
        width: 200,
        height: 200,
        color: Colors.transparent,
      ),
    ),
    
    

    وقت آن است که کد نمونه‌ای که بالا توضیح داده شد را به صورت کامل ببینید:

    import 'dart:ui';
    import 'package:flutter/material.dart';
    
    void main() {
      runApp(MyApp());
    }
    
    class MyApp extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          title: 'BackdropFilter Example',
          home: Scaffold(
            appBar: AppBar(
              title: Text('BackdropFilter Example'),
            ),
            body: Center(
              child: Stack(
                children: [
                  Image.network(
                    'https://images.unsplash.com/photo-1530636791369-871dbd3bb3cd',
                    fit: BoxFit.cover,
                    width: double.infinity,
                    height: double.infinity,
                  ),
                  BackdropFilter(
                    filter: ImageFilter.matrix(<double>[
                      1.2, 0, 0, 0, -30,
                      0, 1.2, 0, 0, -30,
                      0, 0, 1.2, 0, -30,
                      0, 0, 0, 1, 0,
                    ]),
                    child: Container(
                      width: 200,
                      height: 200,
                      color: Colors.transparent,
                    ),
                  ),
                ],
              ),
            ),
          ),
        );
      }
    }
    
    

    اگر این کد را در پروژه خود قرار دهید، می‌توانید با دیدن نتیجه، ایده‌ای دقیق از نحوه کار ویجت BackdropFilter در فلاتر کسب کنید.

    5/5 - ( 1 امتیاز )

    دیدگاه شما نگاه ما رو عوض میکنه !

    نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

    پشتیبانی آنلاین