menk_embed_ime_db 0.0.4
menk_embed_ime_db: ^0.0.4 copied to clipboard
Menksoft old code standard Mongol embed IME. Soft/Hard layout, word database, words suggestion and next word suggestion.
English is not my mother tongue, please correct the mistake.
Menksoft old standard Mongolian Embed IME with the word database.
Web Demo click here
NOTE: This package uses the sqlite3 package. If your app using
sqlite3
or not anySQLite
package, there is no problem using this package. However, using another library ofSQLite
package instead of sqlite3, such as sqflite, may conflict with sqlite3. Anyway, you try to use this package first. After, if something is not working, there may be conflict. In this situation, please use the menk_embed_ime instead of this package.menk_embed_ime
does not contain any word databases and SQLite package and just contains inputting logic. In this situation, you will import the Word database yourself and you can reference this package's source code.
Features #
-
Embed into the Flutter app, support all platform.
-
On mobile, use a soft keyboard by default.
-
On mobile, the soft keyboard auto show or hide when one MongolTextField or TextField gets or loses focus.
-
On the Desktop, use a hard keyboard by default.
-
Show basic candidate words using the inputting logic.
-
Show extra candidate words using the database.
-
Show the next candidate words after the user selects a word from the Candidate Box.
-
Support
MongolTextField
andTextField
.
Getting started #
Although the mongol library is optional, I recommend adding it. It contains
MongolTextField
,MongolText
, and other vertical Mongol components. For convenience, in this guide, I did not import themongol
libray. If you want to use themongol
library, import the themongol
library following the official guide and replaceTextField
used in this guide withMongolTextField
.
1. Add needed library
dependencies:
menk_embed_ime_db: ^0.0.4
Run Flutter pub get
.
2. Add Menksoft's Old Dtatdard Mongol Font
If you using the
mongol
library, skip this step. However, please ensure that you are using aMenksoft's Old Dtatdard Mongol Font
in your project.
-
Add the font to your project
Basically you just need to create an fonts folder for it and then declare the font in pubspec.yaml like this:
flutter: fonts: - family: MenkQagan fonts: - asset: fonts/MQG8F02.ttf
-
Set the default Mongol font for your app
In your
main.dart
file, set thefontFamily
for the app theme.MaterialApp( theme: ThemeData(fontFamily: 'MenkQagan'), // ... );
Now you won't have to manually set the font for every text widget. If you want to use a different font for some widgets, though, you can still set the fontFamily as you normally would inside TextStyle.
3. Initialize word database
On your app's main.dart, add initMenkDB
.
void main() {
runApp(const DemoApp());
initMenkDB();
}
Note: This library is using asset files
sqlite3.wasm
andmenk_ime.db
. On the Web, these asset files may freeze your web app server because these files are too large and load from the web app server. In that case, I recommend you upload all asset files to your CDN server and customize initializing the engine usinginitializeEngine
method withassetBase
parameter, see this for more details.
4. Use menk_embed_ime_db
-
Import library
import 'package:menk_embed_ime_db/menk_embed_ime_db.dart';
-
Add
EmbedKeyboard
@override Widget build() { return Scaffold( body: Column(children: [ const Expanded(child: TextField()), EmbedKeyboard( layoutBuilders: [ (i) => MenkLayout(i, converter: DBMenkLayoutConverter()), EnglishLayout.create, ], ), ]), ); }
After completing this step, the library is imported at the lowest cost. You run your project and see what's going on.
Statement #
This library uses the mongol_code library. The copyright belongs to Suragch
The word database is provided by ZUGA. The copyright belongs to ZUGA
If someone finds cannot input some words or has any other problem with this library, please feel free to open an issue or PR.