স্ন্যাকবার

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

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

  • অ্যাকশন কনফার্মেশন: কোনও ব্যবহারকারী ইমেল বা মেসেজ মুছে দেওয়ার পরে, অ্যাকশন কনফার্ম করতে এবং আগের অবস্থায় ফেরান বিকল্প অফার করতে একটি স্ন্যাকবার দেখানো হয়।
  • নেটওয়ার্ক স্ট্যাটাস: অ্যাপের ইন্টারনেট কানেকশন চলে গেলে, এটি এখন অফলাইন আছে তা জানাতে একটি স্ন্যাকবার পপ-আপ করে।
  • ডেটা জমা দেওয়া: ফর্ম জমা দেওয়া বা সেটিংস আপডেট করার পরে, স্ন্যাকবারে দেখানো হয় যে পরিবর্তনটি সফলভাবে সেভ করা হয়েছে।
স্ন্যাকবার 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 রেফারেন্স ডকুমেন্ট দেখুন।

Key points

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