Die benutzerdefinierte Flutter-Tastatur zeigt auf einem echten Android-Gerät den weißen Vollbildmodus anAndroid

Forum für diejenigen, die für Android programmieren
Anonymous
 Die benutzerdefinierte Flutter-Tastatur zeigt auf einem echten Android-Gerät den weißen Vollbildmodus an

Post by Anonymous »

Ich erstelle eine benutzerdefinierte Tastatur in Flutter für Android. Die Tastatur funktioniert teilweise, aber wenn ich sie als Standardtastatur festlege und versuche, sie auf einem echten Android-Gerät zu öffnen, erscheint sie nicht wie eine Tastatur.
Anstatt unten als Tastatur angezeigt zu werden, öffnet sie sich als weiße Vollbildansicht.
Ich habe es versucht
Keyboard_main.dart

Code: Select all

import 'package:flutter/material.dart';

@pragma('vm:entry-point')
void keyboardMain() {
runApp(const KeyboardRoot());
}

class KeyboardRoot extends StatelessWidget {
const KeyboardRoot({super.key});

@override
Widget build(BuildContext context) {
return const Directionality(
textDirection: TextDirection.ltr,
child: SimpleKeyboard(),
);
}
}

class SimpleKeyboard extends StatelessWidget {
const SimpleKeyboard({super.key});

@override
Widget build(BuildContext context) {
return Container(
width: double.infinity,
height: 280, // Standard keyboard height
color: Colors.indigoAccent,
child: Column(
children: [
// Top row with actions
Padding(
padding: const EdgeInsets.all(8.0),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
_actionButton("Rewrite"),
_actionButton("Fix"),
_actionButton("Shorten"),
_actionButton("Tone"),
],
),
),

// Suggestions row (optional)
SizedBox(
height: 120,
child: Container(
color: Colors.white,
child: ListView.builder(
scrollDirection: Axis.horizontal,
itemCount: 5,
itemBuilder: (context, index) {
return Padding(
padding: const EdgeInsets.symmetric(horizontal: 4.0),
child: Chip(label: Text("Suggestion ${index + 1}")),
);
},
),
),
),

// Standard keyboard bottom area
Container(
height: 50,
color: Colors.grey[200],
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
_iconButton(Icons.arrow_back),
_iconButton(Icons.space_bar),
_iconButton(Icons.keyboard_hide),
],
),
),
],
),
);
}

Widget _actionButton(String text) {
return ElevatedButton(
onPressed: () {
// Handle keyboard actions
},
child: Text(text),
);
}

Widget _iconButton(IconData icon) {
return IconButton(
onPressed: () {
// Handle icon actions
},
icon: Icon(icon),
);
}
}

RewriterKeyboardService.kt

Code: Select all

package com.arleven.rephraseplus

import android.inputmethodservice.InputMethodService
import android.view.View
import android.widget.FrameLayout
import android.graphics.Color
import io.flutter.embedding.android.FlutterView
import io.flutter.embedding.engine.FlutterEngine
import io.flutter.embedding.engine.dart.DartExecutor
import io.flutter.FlutterInjector

class RewriteKeyboardService : InputMethodService() {

private lateinit var engine: FlutterEngine

override fun onCreate() {
super.onCreate()

engine = FlutterEngine(this)
engine.dartExecutor.executeDartEntrypoint(
DartExecutor.DartEntrypoint(
FlutterInjector.instance()
.flutterLoader()
.findAppBundlePath(),
"keyboardMain"
)
)
}

override fun onCreateInputView():  View {
// 🔥 Container is REQUIRED
val container = FrameLayout(this)

val heightDp = 280
val density = resources.displayMetrics.density
val heightPx = (heightDp * density).toInt()

container.layoutParams = FrameLayout.LayoutParams(
FrameLayout.LayoutParams.MATCH_PARENT,
heightPx
)

container.setBackgroundColor(Color.TRANSPARENT)

val flutterView = FlutterView(this)
flutterView.layoutParams = FrameLayout.LayoutParams(
FrameLayout.LayoutParams.MATCH_PARENT,
FrameLayout.LayoutParams.MATCH_PARENT
)

flutterView.setBackgroundColor(Color.WHITE)
flutterView.attachToFlutterEngine(engine)

container.addView(flutterView)
return container
}

// 🔥 ABSOLUTELY REQUIRED
override fun onEvaluateFullscreenMode(): Boolean {
return false
}

override fun onDestroy() {
engine.destroy()
super.onDestroy()
}
}
keyboard_config.xml

Code: Select all



Bitte lassen Sie mich wissen, wenn etwas fehlt, und helfen Sie mir dabei

Vielen Dank

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post