Skip to content

Instantly share code, notes, and snippets.

class _SentenceWidgetState extends State<SentenceWidget> {
bool isDisplayDefinition = false;
Timer timer;
@override
Widget build(BuildContext context) {
return ListTile(
onTap: toggleDefinitionVisibility,
contentPadding: EdgeInsets.all(8),
Widget createLevelMenu() {
return PopupMenuButton<GrammarLevel>(
color: kBaseThemeData.primaryColor,
onSelected: _selectLevel,
itemBuilder: (BuildContext context) {
return GrammarLevel.values.map((level) {
String title = level.toString().split('.').last;
return PopupMenuItem<GrammarLevel>(
value: level,
child: Text(
final kBaseThemeData = ThemeData(
primaryColor: Color.fromRGBO(58, 66, 86, 1.0),
backgroundColor: Color.fromRGBO(58, 66, 86, 1.0)
);
class _MyAppState extends State<MyApp> {
int _currentIndex = 0;
@override
Widget build(BuildContext context) {
@override
Widget build(BuildContext context) {
return MaterialApp(
theme: kBaseThemeData,
home: Scaffold(
body: IndexedStack(
index: _currentIndex,
children: <Widget>[
VocabConfigurationListScreen(),
GrammarHomeWidget()
Future<List<GrammarItem>> getGrammarItemList({String categoryName = "", GrammarLevel grammarLevel = GrammarLevel.ALL}) async {
await initDB();
var query = """
select grammar.grammar_id, grammar.grammar_name, grammar.grammar_category, grammar.grammar_level, grammar_desc.desc_en, grammar_structure.structure_en
from grammar
inner join grammar_desc on grammar.grammar_id = grammar_desc.grammar_id
inner join grammar_structure on grammar.grammar_id = grammar_structure.grammar_id
""";
class GrammarItem {
String id;
String name;
String category;
String description;
String structure;
GrammarLevel level;
GrammarFrequency frequency;
GrammarItem.fromMap(Map<String, dynamic> map) {
class GrammarManager {
static const DB_NAME = "grammar.db";
Database _grammarDb;
var _path;
Future<bool> isDBExisting() async {
final _databasesPath = await getDatabasesPath();
if (!Directory(_databasesPath).existsSync()) {
Directory(_databasesPath).createSync();
Widget buildVocabList() =>
FutureBuilder<List<VocabData>>(
future: getVocabDataList(),
builder: (BuildContext context, AsyncSnapshot snapshot) {
if (snapshot.connectionState != ConnectionState.done) {
return Container();
}
final vocabList = snapshot.data;
return (isListViewMode) ? buildListView(vocabList) : buildPageView(vocabList);
},
@plateaukao
plateaukao / google_webapp_dart_query.dart
Created March 8, 2020 08:53
query google web app url and parse data
class NetworkClient {
Future<List<VocabData>> getVocabs(VocabConfiguration vocabConfig) async {
final url = "https://script.google.com/macros/s/script_id_xxxxxxxxxx/exec";
final response = await Dio().get(
url,
queryParameters: {
"id": vocabConfig.sheetId,
"range": vocabConfig.rangeName
}
@plateaukao
plateaukao / googlesheet_query.js
Created March 8, 2020 08:38
google app script: query data from googl sheet
function doGet(request) {
//var spreadsheetId = '14UvTqbN3jxOnXj59HilYllfjetV6eGv6WevQsw---axx';
//var rangeName = 'A2:D';
var spreadsheetId = request.parameter.id;
var rangeName = request.parameter.range;
var values = Sheets.Spreadsheets.Values.get(spreadsheetId, rangeName).values;
if (!values) {
Logger.log('No data found.');
} else {