App encomendas e corrida

// AndroidManifest.xml
//
//

// build.gradle (Module :app)
// dependencies {
// implementation ‘androidx.compose.ui:ui:1.0.1’
// implementation ‘com.google.android.gms:play-services-maps:17.0.0’
// implementation ‘com.squareup.retrofit2:retrofit:2.9.0’
// implementation ‘com.squareup.retrofit2:converter-gson:2.9.0’
// }

// MainActivity.kt
import android.os.Bundle
import android.content.pm.PackageManager
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.layout.Column
import androidx.compose.material.Button
import androidx.compose.material.Text
import androidx.compose.material.TextField
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.tooling.preview.Preview
import androidx.core.app.ActivityCompat
import androidx.core.content.ContextCompat
import androidx.lifecycle.ViewModel
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.ViewModelStoreOwner

class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
solicitarPermissoes()
setContent {
MapScreen()
}
}

private fun solicitarPermissoes() {
    val permissoes = arrayOf(android.Manifest.permission.ACCESS_FINE_LOCATION, android.Manifest.permission.ACCESS_COARSE_LOCATION)
    if (!temPermissoes(permissoes)) {
        ActivityCompat.requestPermissions(this, permissoes, 1)
    }
}

private fun temPermissoes(permissoes: Array<String>): Boolean {
    return permissoes.all { ContextCompat.checkSelfPermission(this, it) == PackageManager.PERMISSION_GRANTED }
}

}

// ui/components/GoogleMapComponent.kt
import com.google.android.gms.maps.CameraUpdateFactory
import com.google.android.gms.maps.GoogleMap
import com.google.android.gms.maps.model.LatLng
import com.google.android.gms.maps.model.MarkerOptions
import androidx.compose.foundation.layout.aspectRatio
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.material.MaterialTheme
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.unit.dp
import com.google.maps.android.ktx.addMarker
import com.google.maps.android.ktx.awaitMap
import com.google.maps.android.ktx.getMapAsync

@Composable
fun GoogleMapComponent() {
val context = LocalContext.current
val mapView = rememberMapViewWithLifecycle()
mapView.getMapAsync { googleMap →
googleMap.setMyLocationEnabled(true)
googleMap.setMyLocationButtonEnabled(true)
googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(LatLng(-23.5505, -46.6333), 15f))
}
}

// ui/components/SearchBar.kt
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.material.Icon
import androidx.compose.material.IconButton
import androidx.compose.material.MaterialTheme
import androidx.compose.material.icons.filled.Search
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp

@Composable
fun SearchBar(
searchQuery: String,
onSearch: (String) → Unit,
onValueChange: (String) → Unit
) {
Row(
modifier = Modifier
.fillMaxWidth()
.padding(16.dp)
) {
TextField(
value = searchQuery,
onValueChange = onValueChange,
label = { Text(“Pesquisar”) },
modifier = Modifier
.fillMaxWidth()
.weight(1f)
)
IconButton(onClick = { onSearch(searchQuery) }) {
Icon(Icons.Filled.Search, contentDescription = “Pesquisar”)
}
}
}

// ui/components/Button.kt
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.material.Button
import androidx.compose.material.MaterialTheme
import androidx.compose.material.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp

@Composable
fun Button(
text: String,
onClick: () → Unit
) {
Button(onClick = onClick) {
Text(text)
}
}

// ui/screens/MapScreen.kt
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.material.MaterialTheme
import androidx.compose.runtime.