Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
ginkgo
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package Registry
Container Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
vjrj
ginkgo
Commits
c6ea1e65
Commit
c6ea1e65
authored
2 years ago
by
vjrj
Browse files
Options
Downloads
Patches
Plain Diff
PWA wip
parent
da884534
No related branches found
No related tags found
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
lib/main.dart
+56
-41
56 additions, 41 deletions
lib/main.dart
lib/ui/screens/fifth_screen.dart
+29
-4
29 additions, 4 deletions
lib/ui/screens/fifth_screen.dart
with
85 additions
and
45 deletions
lib/main.dart
+
56
−
41
View file @
c6ea1e65
...
...
@@ -2,6 +2,7 @@ import 'dart:io';
import
'package:connectivity_wrapper/connectivity_wrapper.dart'
;
import
'package:easy_localization/easy_localization.dart'
;
import
'package:filesystem_picker/filesystem_picker.dart'
;
import
'package:flutter/foundation.dart'
;
import
'package:flutter/material.dart'
;
import
'package:flutter_bloc/flutter_bloc.dart'
;
...
...
@@ -12,6 +13,7 @@ import 'package:hydrated_bloc/hydrated_bloc.dart';
import
'package:introduction_screen/introduction_screen.dart'
;
import
'package:once/once.dart'
;
import
'package:path_provider/path_provider.dart'
;
import
'package:pwa_install/pwa_install.dart'
;
import
'package:responsive_framework/responsive_wrapper.dart'
;
import
'package:responsive_framework/utils/scroll_behavior.dart'
;
import
'package:sentry_flutter/sentry_flutter.dart'
;
...
...
@@ -37,6 +39,8 @@ import 'ui/screens/skeleton_screen.dart';
import
'ui/ui_helpers.dart'
;
void
main
()
async
{
Bloc
.
observer
=
AppBlocObserver
();
/// Initialize packages
WidgetsFlutterBinding
.
ensureInitialized
();
await
EasyLocalization
.
ensureInitialized
();
...
...
@@ -56,9 +60,9 @@ void main() async {
await
shared
.
getWallet
();
assert
(
shared
.
getPubKey
()
!=
null
);
await
Hive
.
initFlutter
();
if
(
kIsWeb
)
{
// It seems is redundant
// await Hive.initFlutter();
HydratedBloc
.
storage
=
await
HydratedStorage
.
build
(
storageDirectory:
HydratedStorage
.
webStorageDirectory
);
}
else
{
...
...
@@ -68,14 +72,16 @@ void main() async {
await
HydratedStorage
.
build
(
storageDirectory:
tmpDir
);
}
Bloc
.
observer
=
AppBlocObserver
();
// Reset hive during developing
if
(
!
kReleaseMode
)
{
// Once.clearAll();
// await HydratedBloc.storage.clear();
}
PWAInstall
()
.
setup
(
installCallback:
()
{
logger
(
'APP INSTALLED!'
);
});
void
appRunner
()
=
>
runApp
(
EasyLocalization
(
path:
'assets/translations'
,
...
...
@@ -287,43 +293,52 @@ class _GinkgoAppState extends State<GinkgoApp> {
},
duration:
const
Duration
(
minutes:
10
));
fetchTransactions
(
context
);
return
ConnectivityAppWrapper
(
app:
MaterialApp
(
/// Localization is not available for the title.
title:
'Ğ1nkgo'
,
theme:
ThemeData
(
useMaterial3:
true
,
colorScheme:
lightColorScheme
),
darkTheme:
ThemeData
(
useMaterial3:
true
,
colorScheme:
darkColorScheme
),
/// Theme stuff
/// Localization stuff
localizationsDelegates:
context
.
localizationDelegates
,
supportedLocales:
context
.
supportedLocales
,
locale:
context
.
locale
,
debugShowCheckedModeBanner:
false
,
home:
context
.
read
<
AppCubit
>()
.
isIntroViewed
?
const
SkeletonScreen
()
:
const
AppIntro
(),
builder:
(
BuildContext
buildContext
,
Widget
?
widget
)
{
return
ResponsiveWrapper
.
builder
(
BouncingScrollWrapper
.
builder
(
context
,
ConnectivityWidgetWrapper
(
message:
tr
(
'offline'
),
height:
20
,
child:
widget
!
,
)),
maxWidth:
480
,
minWidth:
480
,
// defaultScale: true,
breakpoints:
<
ResponsiveBreakpoint
>[
const
ResponsiveBreakpoint
.
resize
(
200
,
name:
MOBILE
),
const
ResponsiveBreakpoint
.
resize
(
480
,
name:
TABLET
),
const
ResponsiveBreakpoint
.
resize
(
1000
,
name:
DESKTOP
),
],
background:
Container
(
color:
const
Color
(
0xFFF5F5F5
)),
);
},
));
app:
FilesystemPickerDefaultOptions
(
fileTileSelectMode:
FileTileSelectMode
.
wholeTile
,
theme:
FilesystemPickerTheme
(
topBar:
FilesystemPickerTopBarThemeData
(
backgroundColor:
Theme
.
of
(
context
)
.
colorScheme
.
primary
,
),
),
child:
MaterialApp
(
/// Localization is not available for the title.
title:
'Ğ1nkgo'
,
theme:
ThemeData
(
useMaterial3:
true
,
colorScheme:
lightColorScheme
),
darkTheme:
ThemeData
(
useMaterial3:
true
,
colorScheme:
darkColorScheme
),
/// Theme stuff
/// Localization stuff
localizationsDelegates:
context
.
localizationDelegates
,
supportedLocales:
context
.
supportedLocales
,
locale:
context
.
locale
,
debugShowCheckedModeBanner:
false
,
home:
context
.
read
<
AppCubit
>()
.
isIntroViewed
?
const
SkeletonScreen
()
:
const
AppIntro
(),
builder:
(
BuildContext
buildContext
,
Widget
?
widget
)
{
return
ResponsiveWrapper
.
builder
(
BouncingScrollWrapper
.
builder
(
context
,
ConnectivityWidgetWrapper
(
message:
tr
(
'offline'
),
height:
20
,
child:
widget
!
,
)),
maxWidth:
480
,
minWidth:
480
,
// defaultScale: true,
breakpoints:
<
ResponsiveBreakpoint
>[
const
ResponsiveBreakpoint
.
resize
(
200
,
name:
MOBILE
),
const
ResponsiveBreakpoint
.
resize
(
480
,
name:
TABLET
),
const
ResponsiveBreakpoint
.
resize
(
1000
,
name:
DESKTOP
),
],
background:
Container
(
color:
const
Color
(
0xFFF5F5F5
)),
);
},
)));
});
}
}
This diff is collapsed.
Click to expand it.
lib/ui/screens/fifth_screen.dart
+
29
−
4
View file @
c6ea1e65
import
'package:easy_localization/easy_localization.dart'
;
import
'package:flutter/material.dart'
;
import
'package:flutter_bloc/flutter_bloc.dart'
;
import
'package:pwa_install/pwa_install.dart'
;
import
'package:share_plus/share_plus.dart'
;
import
'../../data/models/app_cubit.dart'
;
...
...
@@ -24,7 +25,8 @@ class FifthScreen extends StatelessWidget {
@override
Widget
build
(
BuildContext
context
)
{
return
BlocBuilder
<
AppCubit
,
AppState
>(
builder:
(
BuildContext
context
,
AppState
state
)
=
>
Scaffold
(
builder:
(
BuildContext
context
,
AppState
state
)
=
>
Scaffold
(
appBar:
AppBar
(
title:
Text
(
tr
(
'bottom_nav_fifth'
))),
drawer:
const
CardDrawer
(),
body:
ListView
(
...
...
@@ -87,13 +89,35 @@ class FifthScreen extends StatelessWidget {
GridItem
(
title:
'share_your_key'
,
icon:
Icons
.
share
,
onTap:
()
=
>
Share
.
share
(
SharedPreferencesHelper
()
.
getPubKey
())),
onTap:
()
=
>
Share
.
share
(
SharedPreferencesHelper
()
.
getPubKey
())),
GridItem
(
title:
'copy_your_key'
,
icon:
Icons
.
copy
,
onTap:
()
=
>
copyPublicKeyToClipboard
(
context
),
),
if
(
PWAInstall
()
.
installPromptEnabled
)
GridItem
(
title:
'install_desktop'
,
icon:
Icons
.
install_desktop
,
onTap:
()
{
try
{
PWAInstall
()
.
promptInstall_
();
}
catch
(
e
)
{
final
String
error
=
e
.
toString
();
ScaffoldMessenger
.
of
(
context
)
.
showSnackBar
(
SnackBar
(
content:
Text
(
tr
(
'error_installing_desktop'
,
namedArgs:
<
String
,
String
>{
'error'
:
error
})),
),
);
}
},
),
GridItem
(
title:
'export_key'
,
icon:
Icons
.
download
,
...
...
@@ -116,6 +140,7 @@ class FifthScreen extends StatelessWidget {
},
);
}),
]),
if
(
state
.
expertMode
)
const
TextDivider
(
text:
'technical_info_title'
),
...
...
@@ -130,7 +155,7 @@ class FifthScreen extends StatelessWidget {
title:
'code_card_title'
,
icon:
Icons
.
code_rounded
,
url:
Uri
.
parse
(
'https://git.duniter.org/vjrj/ginkgo'
)),
Uri
.
parse
(
'https://git.duniter.org/vjrj/ginkgo'
)),
const
BottomWidget
(),
SwitchListTile
(
title:
Text
(
tr
(
'expert_mode'
)),
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment