Хорошо, поэтому я нигде не нашел ответа, поэтому мне пришлось проделать кое-какие хакерские штуки, вот как я заставил его работать, так как флаттер - это не годится.
Обзор решения:
1.- Итак, сначала проверьте, работаете ли вы на Android, вы можете сделать это с помощью if (Platform.isAndroid) на флаттере.
2.- Если вы действительно работаете на Android, вы можете открыть канал платформы для собственного Android, чтобы проверить фактического производителя (я опубликую, как кодировать ниже).
3.- Проверьте производителя или имя устройства на наличие «Amazon» или «Kindle» или чего-то еще, if (string.contains («»)) поможет.
4.- Откройте снова канал платформы для Native Android и откройте диалоговое окно с предупреждением с помощью Edittext, запишите полученную строку и верните ее в режим flutter.
Вот так я заставил клавиатуру firetv работать в условиях флаттера.
if (Platform.isAndroid){
checkOs().then((String osName){
print("Device running on: $osName");
if(osName.contains("Amazon") || osName.contains("AFTN")){
fireTvKeyboardInput().then((String result){
buscarTitulo(result);
});
}else{
_showDialog(); // Keyboard for NON FIREOS devices on Android.
}
});
}else{
//IF Device is not Android Eg. IOS
_showDialog();
}
Теперь есть две функции, которые я использовал "checkOs" и "fireTvKeyboardInput", вот код:
Future<String> checkOs() async {
String myResult = "";
try {
myResult = await platform.invokeMethod("checkOS", <String, dynamic>{
'param1': "hello",
});
}catch (e){
print ("exception: $e");
}
return myResult;
}
Future<String> fireTvKeyboardInput() async {
String myResult = "";
try {
myResult = await platform.invokeMethod("fireKeyBoard", <String, dynamic>{
'param1': "hello",
});
}catch (e){
print ("exception: $e");
}
return myResult;
}
На Native Android есть код:
if(call.method == "checkOS"){
val operatingSystem = android.os.Build.MANUFACTURER + "- " + android.os.Build.MODEL
result.success(operatingSystem)
}
if(call.method == "fireKeyBoard"){
val alert = AlertDialog.Builder(this)
alert.setMessage("Search")
// Set an EditText view to get user input
val input = EditText(this)
input.hint = "Enter Text"
input.inputType = InputType.TYPE_CLASS_TEXT
alert.setView(input)
input.setOnKeyListener { view, keyCode, keyEvent ->
if (keyCode == 66) {
val imm = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
imm.hideSoftInputFromWindow(input.windowToken, 0)
}
false
}
alert.setPositiveButton("Ok") { dialog, whichButton ->
result.success(input.text.toString());
}
alert.setNegativeButton("Cancel") { dialog, whichButton ->
// Canceled.
}
alert.show()
}
person
Adrian M Cavazos
schedule
01.05.2020