Вместо того, чтобы отображаться как клавиатура внизу, она открывается в белом полноэкранном режиме.
Я попробовал это
Keyboard_main.dart
Код: Выделить всё
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),
);
}
}
Код: Выделить всё
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()
}
}
Код: Выделить всё
Спасибо
Подробнее здесь: https://stackoverflow.com/questions/798 ... oid-device