Flutter Sidebar und BottomNavigationBar?

Hallo!

Ich wollte gerade zu meiner App eine Sidebar und zusätzlich eine BottomNavigationBar hinzufügen. Jedoch funktioniert die Kombination von den Beiden nicht. Also die Sidebar ohne der BottomNavigationBar funktioniert und umgekerht. Das heißt auch die BottomNavigationBar funktioniert ohne Sidebar. ABer wenn ich beide zusammen einbinde dann geht es nicht.

Hier mein Code:

Sidebar:

import 'package:flutter/material.dart';

class Sidebar extends StatelessWidget {
  const Sidebar({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Container(
      child: SafeArea(child: Drawer(
        child: ListView(
          children: [
            DrawerHeader(
              decoration: BoxDecoration(
                color: Colors.red,
              ),
              child: Column(
                children: [Text('')],
              ),
            ),
            ListTile(
              title: Text("Vidoes"),
              onTap: () => Navigator.pushReplacementNamed(context, 'videos'),
            ),
            ListTile(
              title: Text("Filme"),
              onTap: () => Navigator.pushReplacementNamed(context, 'filme'),
            ),
            
          ],
        ),
      ),
      ),
    );
  }
}

BottomNavigationBar:

import 'package:flutter/material.dart';
import 'package:flutter_aposys/pages_export.dart';

class BottomNavigation extends StatefulWidget {
  const BottomNavigation({Key? key}) : super(key: key);

  @override
  State<BottomNavigation> createState() => _BottomNavigationState();
}

class _BottomNavigationState extends State<BottomNavigation> {
  int currentIndex = 0;
  final screens = [
    Home(),
    Maps(),
    Kalender(),
  ];

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: screens[currentIndex],
      bottomNavigationBar: BottomNavigationBar(
        type: BottomNavigationBarType.fixed,
        backgroundColor: Colors.grey,
        selectedItemColor: Colors.red,
        currentIndex: currentIndex,
        onTap: (index)=> setState(() {
          currentIndex=index;
        }),
        items: [
          BottomNavigationBarItem(icon: Icon(Icons.home), label: 'Home'),
          BottomNavigationBarItem(icon: Icon(Icons.map), label: 'Maps'),
          BottomNavigationBarItem(icon: Icon(Icons.calendar_month), label: 'Kalender'),
        ],
      ),
    );
  }
}

Bite um eure Hilfe!

Der Code für die main Datei und für die Home Datei ist in der Antwort zu finden!

PC, Computer, App, Technik, IT, programmieren, iOS, Android, Dart, development, Navigation, Softwareentwicklung, Technologie, sidebar, Backend, app entwicklung, Flutter, Android Studio
Kotlin - was ist falsch mit meinem Code?

Geschätze Community,
Ich bin neu bei Gutefrage sowie mit jetpack compose.

Meine message bubble ist viel zu hoch und passt sich dem Text nicht an. Kann wer helfen?

class MainActivity : ComponentActivity() {
    private val service = PostsService.create() //TODO: just for testing - don't do this in a production app


    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent {
            Toolbar()
            Spacer(modifier = Modifier.height(100.dp))

            val posts = produceState<List<PostResponse>>(
                initialValue = emptyList(),
                producer = {
                    value = service.getPosts()
                }
            )

            LazyColumn {
                items(posts.value) {
                    Column(
                        modifier = Modifier
                            .background(
                                color = Color.Gray,
                                shape = RoundedCornerShape(10.dp)
                            )
                            .width(300.dp)
                            .padding(16.dp)
                            .drawBehind {
                                val cornerRadius = 10.dp.toPx()
                                val triangleHeight = 20.dp.toPx()
                                val triangleWidth = 25.dp.toPx()
                                val trianglePath = Path().apply {
                                    moveTo(size.width, size.height - cornerRadius)
                                    lineTo(size.width, size.height + triangleHeight)
                                    lineTo(triangleWidth, size.height - cornerRadius)
                                    close()
                                }

                                drawPath(
                                    path = trianglePath,
                                    color = Color.Gray
                                )
                            }

                    ) {
                        Spacer(modifier = Modifier.height(100.dp))
                        Text(text = it.message, fontSize = 16.sp)
                        Spacer(modifier = Modifier.height(4.dp))
                        Text(text = it.category, fontSize = 10.sp)

                    }
                }
            }
            Column()
                Spacer(modifier = Modifier.height(320.dp))
                MessageInput()
            }
            }
        }
    }

Die bubble ragt immer über die Toolbar hinaus. Leider weiss ich noch nicht, wie ich dies beheben kann. Kann mir Jemand helfen? Vielen Dank für jede Hilfe.

Kotlin - was ist falsch mit meinem Code?
programmieren, Layout, Code, UI, Android Studio, Kotlin
Android App löscht Session automatisch bei onDestroy?

Ich habe eine App, wo man sich anmelden muss.

Die SessionID wird in der Login Activity empfangen und gespeichert. Wenn ich auf einer anderen Activity bin, hole ich die SessionID aus den ShaPref und hänge sie an den Header. Dann erhalte ich einen Response. Alles funktioniert einwandfrei.

Aber sobald ich die App schließe und den Login überspringe, dann wird ja die SessionID wieder aus den ShaPref geholt und an den Header gehängt.

Die SessionID ist weiterhin vorhanden! Dies prüfe ich anhand des Toast und Logs.

Aber ich erhalte den Response, dass ich ausgeloggt sei. Und die Session ist komplett leer.

Meine Vermutung ist:

Das die SessionID nur der Ort ist, wo die Datei mit den Werten gespeichert ist. Also das ich die SessionID an den Header hänge und dann weiß die Seite, welche Datei benutzt werden soll. Aber wenn man aus der App herausgeht, löscht Android automatisch diese Datei. Doch die SessionID-Adresse bleibt bestehen.

Fragen:

  • Wie kann ich die App schließen, ohne dass Android die Datei löscht?
  • Wo wird die Session auf dem Handy gespeichert? Ich kann es ja am PC einsehen.
  • Wie kann ich verhindern, dass Androids onDestroy etc. die Datei löscht?

Und wie kann ich dafür sorgen, dass Android bei onDestroy etc. die Datei löscht?

Wenn ich angemeldet sein möchte und ich herausgehe und wieder rein, bleibt die SessionID. Aber auf der Webseite ist sie leer. Aber wenn ich nicht angemeldet sein möchte, dann wird die ShaPref gelöscht und dann soll auch die Datei gelöscht werden.

Ich hoffe, ihr habt eine Lösung, wie man die automatische Löschung von dieser Datei bei Verlassen der App verhindert.

Ich danke euch im Voraus.

App, programmieren, Java, Android, session, Speicherort, Android Studio
Android Studio: Wieso verändern die Elemente ihre Position?

Hey,

ich habe da ein kleines Problem. Auf dem PC sind alle Elemente dort, wo sie sein sollten, aber wenn ich die App auf dem Handy ausführe, sind die Elemente irgendwie bzw. irgendwo platziert. Kann mir jemand vielleicht sagen, woran es liegen könnte?

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools"
  xmlns:app="http://schemas.android.com/apk/res-auto"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:background="@color/black_shade_1"
  tools:context=".MainActivity">
  <ImageView 
    android:layout_width="152dp"
    android:layout_height="185dp" 
    app:srcCompat="@drawable/iconqrlogo" 
    android:id="@+id/imageView"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    android:layout_marginTop="32dp"
    app:layout_constraintHorizontal_bias="0.498" />
  <ProgressBar
    style="?android:attr/progressBarStyle"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/progressBar"
    android:visibility="visible"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.498"
    android:layout_marginTop="56dp"
    app:layout_constraintTop_toBottomOf="@+id/imageView" />
  <Button
    android:text="@string/generateButton"
    android:layout_width="250dp"
    android:layout_height="60dp"
    android:id="@+id/generateQrCode"
    app:backgroundTint="@color/yellow"
    android:textColor="#000000"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintHorizontal_bias="0.496"
    app:layout_constraintBottom_toBottomOf="parent"
    android:layout_marginBottom="160dp" />
  <Button
    android:text="@string/scanCode"
    android:layout_width="250dp"
    android:layout_height="60dp"
    android:id="@+id/scanQrCode"
    app:backgroundTint="@color/yellow"
    android:textColor="#000000"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/progressBar"
    android:layout_marginTop="48dp"
    app:layout_constraintHorizontal_bias="0.503"
    app:layout_constraintBottom_toTopOf="@+id/generateQrCode"
    app:layout_constraintVertical_bias="0.061" />
</androidx.constraintlayout.widget.ConstraintLayout>
Android Studio: Wieso verändern die Elemente ihre Position?
Computer, App, programmieren, Java, Android, Android App, Android Studio
Wieso ändern sich die Position der Elemente am Handy?

Hey Leute,

ich habe ein kleines Preoblem und zwar die Positionen der Elemente im Android Studio enspricht nicht der am Handy also am Handy werden sie komplett anders angeordernt und nicht wie ich sie im Android Studio positioniert hatte.

Z.B. der Button sollte oben sein und nicht unten!

Hat jemand vielleicht eine Idee voran es liegen könnte?

Danke im Voraus


  

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="158dp"
        android:layout_marginBottom="274dp"
        android:text="@string/button"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintStart_toStartOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>



---------------------------manifest------------------
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.test">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.Test">
        <activity
            android:name=".MainActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>


-----------------gradle-------------------------
plugins {
    id 'com.android.application'
}

android {
    compileSdk 31

    defaultConfig {
        applicationId "com.example.test"
        minSdk 21
        targetSdk 31
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

dependencies {

    implementation 'androidx.appcompat:appcompat:1.2.0'
    implementation 'com.google.android.material:material:1.3.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
    testImplementation 'junit:junit:4.+'
    androidTestImplementation 'androidx.test.ext:junit:1.1.2'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
}
Wieso ändern sich die Position der Elemente am Handy?
programmieren, Design, Java, Android App, Android Studio
Android Studio App stürzt ab nach klick auf Button?

Hallo,

ich habe eine Android Studio Applikation mit einer Bottom Navigation bar, bei welcher unter dem Reiter "Profile" ein User hinzugefügt werden soll. Wenn ich dort auf "Add User" klick stürzt die App allerdings ab, in der Version ohne Navigationsbar funktioniert das allerdings einwand frei. Vielleicht kann mir jedmand helfen, den Fehler zu finden.

Hier ist die UI von Profile:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout ...
    ...
    <Button
        android:id="@+id/btAddUser"
        ...
        android:text="Add User"
        android:onClick="onAddUser"
        />

</LinearLayout>

Hier die UI der BottomBar:

<?xml version="1.0" encoding="utf-8"?>
<...
    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/fragment_container"
        >  
...
 app:menu="@menu/bottom_navigation"/>
    </FrameLayout>

Die Klasse zur BottomBar:

package com.example.bottomnav;
import ...
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

BottomNavigationView bottomNavigation = findViewById(R.id.bottom_navigation);    bottomNavigation.setOnNavigationItemSelectedListener(navListener);
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
...
private BottomNavigationView.OnNavigationItemSelectedListener navListener =
new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull @NotNull MenuItem item) {
Fragment selectedFragment = null;
switch (item.getItemId())
{
case R.id.nav_projects:
selectedFragment = new ...
ProfileFragment();
break;
}
                    getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
selectedFragment).commit();
return true;
}};}

Hier der Code zum Profil hinzufügen:

@Nullable
@org.jetbrains.annotations.Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    return inflater.inflate(R.layout.fragment_profile, container, false);
}

public
class MyActivity extends AppCompatActivity {
    ...

    Button btAddUser;
...

    Boolean isAdmin = Boolean.FALSE;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.fragment_profile);
       ...
        btAddUser = findViewById(R.id.btAddUser);

        btAddUser.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {onAddUser(btAddUser);}

    public void onAddUser(View view) {
...

Computer, Java, Android, Informatik, XML, Progamm, Android Studio
Flutter-Future<List> als List zurück geben?

Heeeeey Leute,

Ich rufe eine Liste aus der Datenbank ab und will daraus eine Liste auf der App visualisieren.

Aber in einer async Funktion kann ich keine liste zurück geben.
Wie bekomme ich die Liste jetzt in meinen build.

Code sieht so aus

  void missionEntries()async{
    final Future<List>mission=DBManagement().getAll();
    List missions=await mission.then((value) => null);
  }

  @override
  Widget build(BuildContext context) {
    missionEntries();
    return Expanded(
      child: Container(
        child: ListView.builder(
          itemCount: missions.length,
          itemBuilder: (context, index) {
            return GestureDetector(
              onLongPress: ()=>print("Eintrag bearbeiten!"),
              onTap: ()=>print("Eintrag einsehen!"),
              child: Card(
                child: Row(
                  children: <Widget>[
                    Expanded(
                      child: Text(
                        missions[index]["num"],
                        textAlign: TextAlign.center,
                      ),
                    ),
                    Expanded(
                      child: Text(missions[index]["location"]),
                    ),
                    Expanded(
                      child: Text(missions[index]["date"].toString()),
                    ),
                    Expanded(
                      child: Text(missions[index]["time"].toString()),
                    ),
                    Expanded(
                      child: IconButton(
                        icon: Icon(Icons.delete),
                        onPressed: ()=>print("löschen")
                      )
                    ),
                  ],
                ),
              ),
            );
          }
        ),
      ),
    );
  }

und missionEntries(); müsste eigentlich zu

List missions=missionEntries() werden weil ich die missions liste

ein paar zeilen weiter im ListView.builder brauche.

Hoffe Ihr könnt mir helfen.

programmieren, Scripten, Visual Studio, Flutter, Android Studio

Meistgelesene Fragen zum Thema Android Studio