স্ন্যাকবার

স্ন্যাকবার কম্পোনেন্টটি স্ক্রিনের নীচে প্রদর্শিত একটি সংক্ষিপ্ত বিজ্ঞপ্তি হিসেবে কাজ করে। এটি ব্যবহারকারীর অভিজ্ঞতায় কোনও বাধা না দিয়ে কোনও ক্রিয়াকলাপ বা ক্রিয়া সম্পর্কে প্রতিক্রিয়া প্রদান করে। কয়েক সেকেন্ড পরে স্ন্যাকবারগুলি অদৃশ্য হয়ে যায়। ব্যবহারকারী কোনও পদক্ষেপের মাধ্যমেও সেগুলি বাতিল করতে পারেন, যেমন একটি বোতামে ট্যাপ করা।

এই তিনটি ব্যবহারের ক্ষেত্রে বিবেচনা করুন যেখানে আপনি একটি স্ন্যাকবার ব্যবহার করতে পারেন:

  • অ্যাকশন নিশ্চিতকরণ: একজন ব্যবহারকারী কোনও ইমেল বা বার্তা মুছে ফেলার পরে, একটি স্ন্যাকবার অ্যাকশনটি নিশ্চিত করার জন্য উপস্থিত হয় এবং একটি পূর্বাবস্থায় ফেরানোর বিকল্প অফার করে।
  • নেটওয়ার্ক স্ট্যাটাস: যখন অ্যাপটি তার ইন্টারনেট সংযোগ বিচ্ছিন্ন করে, তখন একটি স্ন্যাকবার পপ আপ হয় যেখানে লেখা থাকে যে এটি এখন অফলাইন।
  • ডেটা জমা দেওয়া: একটি ফর্ম সফলভাবে জমা দেওয়া বা সেটিংস আপডেট করার পরে, একটি স্ন্যাকবার নোট করে যে পরিবর্তনটি সফলভাবে সংরক্ষণ করা হয়েছে।
স্ন্যাকবার UI উপাদানের উদাহরণ।
চিত্র ১. স্ন্যাকবারের উদাহরণ।

মৌলিক উদাহরণ

একটি স্ন্যাকবার বাস্তবায়নের জন্য, আপনাকে প্রথমে SnackbarHost তৈরি করতে হবে, যার মধ্যে একটি SnackbarHostState প্রপার্টি থাকবে। SnackbarHostState showSnackbar() ফাংশনে অ্যাক্সেস প্রদান করবে যা আপনি আপনার স্ন্যাকবার প্রদর্শন করতে ব্যবহার করতে পারবেন।

এই সাসপেন্ডিং ফাংশনটির জন্য একটি CoroutineScope প্রয়োজন — যেমন rememberCoroutineScope দ্বারা ফেরত পাঠানো হয়েছে — এবং Scaffold মধ্যে একটি Snackbar দেখানোর জন্য UI ইভেন্টের প্রতিক্রিয়ায় এটি কল করা যেতে পারে।

val scope = rememberCoroutineScope()
val snackbarHostState = remember { SnackbarHostState() }
Scaffold(
    snackbarHost = {
        SnackbarHost(hostState = snackbarHostState)
    },
    floatingActionButton = {
        ExtendedFloatingActionButton(
            text = { Text("Show snackbar") },
            icon = { Icon(Icons.Filled.Image, contentDescription = "") },
            onClick = {
                scope.launch {
                    snackbarHostState.showSnackbar("Snackbar")
                }
            }
        )
    }
) { contentPadding ->
    // Screen content
}

অ্যাকশন সহ স্ন্যাকবার

আপনি একটি ঐচ্ছিক ক্রিয়া প্রদান করতে পারেন এবং Snackbar এর সময়কাল সামঞ্জস্য করতে পারেন। snackbarHostState.showSnackbar() ফাংশন অতিরিক্ত actionLabel এবং duration পরামিতি গ্রহণ করে এবং একটি SnackbarResult প্রদান করে।

val scope = rememberCoroutineScope()
val snackbarHostState = remember { SnackbarHostState() }
Scaffold(
    snackbarHost = {
        SnackbarHost(hostState = snackbarHostState)
    },
    floatingActionButton = {
        ExtendedFloatingActionButton(
            text = { Text("Show snackbar") },
            icon = { Icon(Icons.Filled.Image, contentDescription = "") },
            onClick = {
                scope.launch {
                    val result = snackbarHostState
                        .showSnackbar(
                            message = "Snackbar",
                            actionLabel = "Action",
                            // Defaults to SnackbarDuration.Short
                            duration = SnackbarDuration.Indefinite
                        )
                    when (result) {
                        SnackbarResult.ActionPerformed -> {
                            /* Handle snackbar action performed */
                        }
                        SnackbarResult.Dismissed -> {
                            /* Handle snackbar dismissed */
                        }
                    }
                }
            }
        )
    }
) { contentPadding ->
    // Screen content
}

আপনি snackbarHost প্যারামিটার সহ একটি কাস্টম Snackbar প্রদান করতে পারেন। আরও তথ্যের জন্য SnackbarHost API রেফারেন্স ডক্স দেখুন।

গুরুত্বপূর্ণ বিষয়সমূহ

  • actionLabel = "Action" : অ্যাকশন বোতামের টেক্সট সেট করে।
  • duration = SnackbarDuration.Indefinite : ব্যবহারকারী বা প্রোগ্রাম কর্তৃক বাতিল না করা পর্যন্ত স্ন্যাকবারটি প্রদর্শিত থাকে।
  • SnackbarResult.ActionPerformed : ব্যবহারকারী স্ন্যাকবারের অ্যাকশন বোতামে ক্লিক করেছেন তা বোঝায়।
  • SnackbarResult.Dismissed : ব্যবহারকারী অ্যাকশন বোতামে ক্লিক না করেই স্ন্যাকবারটি বাতিল করেছেন তা বোঝায়।