স্ন্যাকবার

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

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

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

মৌলিক উদাহরণ

একটি স্ন্যাকবার বাস্তবায়ন করতে, আপনি প্রথমে 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 রেফারেন্স ডক্স দেখুন।