Anonymous
Die benutzerdefinierte Flutter-Tastatur zeigt auf einem echten Android-Gerät den weißen Vollbildmodus an
Post
by Anonymous » 09 Jan 2026, 12:56
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
Bitte lassen Sie mich wissen, wenn etwas fehlt, und helfen Sie mir dabei
Vielen Dank
1767959801
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 [b]echten Android-Gerät[/b] 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 [b]Keyboard_main.dart[/b] [code]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), ); } } [/code] [b]RewriterKeyboardService.kt[/b] [code]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() } } [/code] [b]keyboard_config.xml[/b] [code] [/code] Bitte lassen Sie mich wissen, wenn etwas fehlt, und helfen Sie mir dabei Vielen Dank