স্ন্যাকবার

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

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

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

প্রাথমিক উদাহরণ

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

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

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 রেফারেন্স ডকুমেন্ট দেখুন।

Key points

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