কীভাবে আমি ঝাঁকুনিতে "ফ্রস্টেড কাচ" প্রভাব করব?


99

আমি একটি ফ্লটার অ্যাপ লিখছি এবং আমি আইওএস-এ প্রচলিত "ফ্রস্টেড গ্লাস" প্রভাবটি ব্যবহার / প্রয়োগ করতে চাই। আমি এটা কিভাবে করবো?


4
ব্যাকড্রপফিল্টার এবং ইমেজ ফিল্টার ব্যবহার করে কীভাবে ঝাঁকুনির উপর ঝাপসা প্রভাব ফেলতে হয় তা দেখানোর জন্য আমি একটি নিবন্ধ লিখি - এটি মিডিয়ামে পড়ুন
anticafe

আপনি blurrycontainer প্যাকেজ ব্যবহার করতে পারেন ।
জন

উত্তর:


172

আপনি এই প্রভাবটি অর্জন করতে ব্যাকড্রপফিল্টার উইজেট ব্যবহার করতে পারেন ।

স্ক্রিনশট

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

void main() {
  runApp(new MaterialApp(home: new FrostedDemo()));
}

class FrostedDemo extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return new Scaffold(
      body: new Stack(
        children: <Widget>[
          new ConstrainedBox(
            constraints: const BoxConstraints.expand(),
            child: new FlutterLogo()
          ),
          new Center(
            child: new ClipRect(
              child: new BackdropFilter(
                filter: new ImageFilter.blur(sigmaX: 10.0, sigmaY: 10.0),
                child: new Container(
                  width: 200.0,
                  height: 200.0,
                  decoration: new BoxDecoration(
                    color: Colors.grey.shade200.withOpacity(0.5)
                  ),
                  child: new Center(
                    child: new Text(
                      'Frosted',
                      style: Theme.of(context).textTheme.display3
                    ),
                  ),
                ),
              ),
            ),
          ),
        ],
      ),
    );
  }
}

আমি কীভাবে অ্যাপ্লিকেশনের পুরো প্রস্থ / উচ্চতাতে হিমযুক্ত প্রভাবটি তৈরি করব?
পিটার


4
বা, আপনি যদি ডায়লগগুলির জন্য মডেল বাধা হিসাবে হিমশীতল কাচের প্রভাবটি ব্যবহার করার চেষ্টা করছেন, আপনি ব্যাকড্রপফিল্টার অন্তর্ভুক্ত করতে আপনার মডালবারিয়ার অনুলিপিটি সংশোধন করতে পারেন। github.com/flutter/flutter/blob/master/packages/flutter/lib/src/…
কলিন জ্যাকসন

: দুর্ভাগ্যবশত ব্লার ইফেক্ট iOS ডিভাইস কাজ করে না github.com/flutter/flutter/issues/10284
মার্ক

4
প্রথমত, উপরের সমস্যাটি সমাধান হয়ে গেছে এবং অস্পষ্ট প্রভাবটি এখন আইওএস ডিভাইসগুলিতে কাজ করে :)
লোগানরসেল 48

13

আমি মনে করি আমি 'ফ্রস্টেড' এর সঠিক অর্থ জানি না (যদি আমার উদাহরণটি এখানে কাজ না করে),

import 'package:flutter/material.dart';
import 'dart:ui' as ui;

void main() => runApp(
    MaterialApp(
        title: "Frosted glass",
        home: new HomePage()
    )
);

class HomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return new Scaffold(
      body: new Stack(
        fit: StackFit.expand,
        children: <Widget>[
          generateBluredImage(),
          new Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              rectShapeContainer(),
            ],
          ),
        ],
      ),
    );
  }

  Widget generateBluredImage() {
    return new Container(
      decoration: new BoxDecoration(
        image: new DecorationImage(
          image: new AssetImage('assets/images/huxley-lsd.png'),
          fit: BoxFit.cover,
        ),
      ),
      //I blured the parent container to blur background image, you can get rid of this part
      child: new BackdropFilter(
        filter: new ui.ImageFilter.blur(sigmaX: 3.0, sigmaY: 3.0),
        child: new Container(
          //you can change opacity with color here(I used black) for background.
          decoration: new BoxDecoration(color: Colors.black.withOpacity(0.2)),
        ),
      ),
    );
  }

  Widget rectShapeContainer() {
    return Container(
      margin: const EdgeInsets.symmetric(horizontal: 40.0, vertical: 10.0),
      padding: const EdgeInsets.all(15.0),
      decoration: new BoxDecoration(
        //you can get rid of below line also
        borderRadius: new BorderRadius.circular(10.0),
        //below line is for rectangular shape
        shape: BoxShape.rectangle,
        //you can change opacity with color here(I used black) for rect
        color: Colors.black.withOpacity(0.5),
        //I added some shadow, but you can remove boxShadow also.
        boxShadow: <BoxShadow>[
          new BoxShadow(
            color: Colors.black26,
            blurRadius: 5.0,
            offset: new Offset(5.0, 5.0),
          ),
        ],
      ),
      child: new Column(
        children: <Widget>[
          new Text(
            'There\'s only one corner of the universe you can be certain of improving and that\'s your own self.',
            style: new TextStyle(
              color: Colors.white,
              fontSize: 20.0,
            ),
          ),
        ],
      ),
    );
  }
}

ফলাফল:

এখানে চিত্র বর্ণনা লিখুন

আমি আশা করি এটি কারও সাহায্য করবে।


4
সম্পূর্ণ সাহায্য। 'স্ট্যাক' বিকল্পটি সম্পর্কে সম্পূর্ণরূপে ভুলে গেছি ... বড় ধন্যবাদ।
আহাবলাইভস

আপনি কীভাবে ফ্রস্টিংকে পিতামাতার ধারকের আকার অনুসরণ করতে পারেন? একটি বৃত্তাকার আকারের
ধারকটির

@ কাকিমাস্টারঅফটাইম আমি মনে করি আপনার প্রশ্নটি আমি সঠিকভাবে পাইনি। তবে আপনি যদি বর্ডাররেডিয়াস সরিয়ে বৃত্তাকারে রেক্টশেপ ধারক আকার তৈরি করেন তবে এটি কাজ করবে।
ব্লেসানকা

4
আমি উক্তিটি পছন্দ করি :-)
সন্তানু বেরা

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.