5 Commits

Author SHA1 Message Date
Sas Andy
4b870e7bea change company 2024-01-17 16:54:54 +07:00
sindhu
abddef179d login 2024-01-17 14:17:12 +07:00
sindhu
db88512ca9 commit Merge branch 'andy/merge_camera' 2024-01-17 14:00:58 +07:00
Sas Andy
15097451d2 fix error last rebase 2024-01-17 13:57:29 +07:00
sindhu
987a5a5c3a step 25 : ganti icon apk 2024-01-17 13:54:41 +07:00
54 changed files with 426 additions and 48 deletions

View File

@@ -15,7 +15,9 @@
android:theme="@style/LaunchTheme" android:theme="@style/LaunchTheme"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
android:hardwareAccelerated="true" android:hardwareAccelerated="true"
android:windowSoftInputMode="adjustResize"> android:windowSoftInputMode="adjustResize"
android:screenOrientation="portrait"
>
<!-- Specifies an Android theme to apply to this Activity as soon as <!-- Specifies an Android theme to apply to this Activity as soon as
the Android process has started. This theme is visible to the user the Android process has started. This theme is visible to the user
while the Flutter UI initializes. After that, this theme continues while the Flutter UI initializes. After that, this theme continues

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 KiB

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.4 KiB

After

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 174 KiB

After

Width:  |  Height:  |  Size: 167 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 984 B

After

Width:  |  Height:  |  Size: 880 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 KiB

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.0 KiB

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.3 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.6 KiB

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.0 KiB

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.3 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 KiB

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.8 KiB

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 17 KiB

View File

@@ -10,7 +10,10 @@ class Constant {
static double designWidthPhone = 390; static double designWidthPhone = 390;
static String bearerName = "petty-cash"; static String bearerName = "petty-cash";
static String version = "1.00"; // static String version = "1.00";
// NOTE VERSI HARUS SAMA DENGAN PUBSPEC.YAML
static String version = "1.0.0";
// static String baseUrl = "https://devregonline.pramita.co.id/one-api/xdoc/"; // static String baseUrl = "https://devregonline.pramita.co.id/one-api/xdoc/";

View File

@@ -8,6 +8,9 @@ import 'app/route.dart';
void main() async { void main() async {
WidgetsFlutterBinding.ensureInitialized(); WidgetsFlutterBinding.ensureInitialized();
initializeDateFormatting(); initializeDateFormatting();
await SystemChrome.setPreferredOrientations([
DeviceOrientation.portraitUp,
]);
SystemChrome.setSystemUIOverlayStyle(const SystemUiOverlayStyle( SystemChrome.setSystemUIOverlayStyle(const SystemUiOverlayStyle(
statusBarIconBrightness: statusBarIconBrightness:
Brightness.dark, // this will change the brightness of the icons Brightness.dark, // this will change the brightness of the icons

View File

@@ -0,0 +1,21 @@
class CompanyModel {
String? companyid;
String? companyname;
String? mUserDefaultCompany;
CompanyModel({this.companyid, this.companyname, this.mUserDefaultCompany});
CompanyModel.fromJson(Map<String, dynamic> json) {
companyid = json['companyid'];
companyname = json['companyname'];
mUserDefaultCompany = json['M_UserDefaultCompany'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['companyid'] = this.companyid;
data['companyname'] = this.companyname;
data['M_UserDefaultCompany'] = this.mUserDefaultCompany;
return data;
}
}

View File

@@ -0,0 +1,32 @@
import 'dart:convert';
import 'package:app_petty_cash/model/company_model.dart';
import 'package:app_petty_cash/model/list_type_model.dart';
import '../app/constant.dart';
import '../model/history_transaksi_model.dart';
import '../model/list_category_model.dart';
import 'base_repository.dart';
class CompanyRepository extends BaseRepository {
CompanyRepository({required super.dio});
// list company
Future<List<CompanyModel>> getListCompany({required String userID}) async {
// https: //devone.aplikasi.web.id/one-api-pettycash/pettycash/Usercompany/list_company?M_UserID=2
final service =
"${Constant.baseUrlDevone}Usercompany/list_company?M_UserID=${userID}";
final resp = await get(
service: service,
);
print("url list type : $service");
final result = List<CompanyModel>.empty(growable: true);
resp['data'].forEach((e) {
final model = CompanyModel.fromJson(e);
result.add(model);
});
return result;
}
}

View File

@@ -1,6 +1,13 @@
import 'dart:convert';
import 'package:app_petty_cash/model/auth_model.dart';
import 'package:app_petty_cash/model/company_model.dart';
import 'package:app_petty_cash/screen/change_company/list_company_provider.dart';
import 'package:app_petty_cash/widget/sankbar_widget.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:shared_preferences/shared_preferences.dart';
import '../../app/constant.dart'; import '../../app/constant.dart';
import '../../app/route.dart'; import '../../app/route.dart';
@@ -12,6 +19,14 @@ class ChangeCompanyScreen extends HookConsumerWidget {
@override @override
Widget build(BuildContext context, WidgetRef ref) { Widget build(BuildContext context, WidgetRef ref) {
final listCompany = useState<List<CompanyModel>>([
CompanyModel(companyid: "1", companyname: "SAS"),
CompanyModel(companyid: "2", companyname: "SIM")
]);
final isLoading = useState(false);
final selectedCompanyID = useState("0");
final selectedCompanyName = useState("");
final auth = ref.watch(currentUserProvider);
useEffect(() { useEffect(() {
WidgetsBinding.instance.addPostFrameCallback((timeStamp) async { WidgetsBinding.instance.addPostFrameCallback((timeStamp) async {
final userID = ref.read(currentUserProvider)?.model.M_UserID ?? "0"; final userID = ref.read(currentUserProvider)?.model.M_UserID ?? "0";
@@ -23,9 +38,29 @@ class ChangeCompanyScreen extends HookConsumerWidget {
// Navigator.popAndPushNamed(context, loginRoute); // Navigator.popAndPushNamed(context, loginRoute);
return; return;
} }
ref.read(ListCompanyProvider.notifier).getListCompany(userID: userID);
}); });
return () {}; return () {};
}, []); }, []);
ref.listen(
ListCompanyProvider,
(previous, next) {
if (next is ListCompanyStateLoading) {
isLoading.value = true;
} else if (next is ListCompanyStateError) {
// print(next.message);
isLoading.value = false;
SanckbarWidget(context, next.message, snackbarType.error);
} else if (next is ListCompanyStateDone) {
print(jsonEncode(next.model));
// print(next.model.length);
listCompany.value = next.model;
selectedCompanyID.value = auth?.model.M_CompanyID ?? "0";
isLoading.value = false;
}
},
);
return Padding( return Padding(
padding: EdgeInsets.only( padding: EdgeInsets.only(
top: Constant.getActualYPhone(context: context, y: 30), top: Constant.getActualYPhone(context: context, y: 30),
@@ -43,7 +78,131 @@ class ChangeCompanyScreen extends HookConsumerWidget {
), ),
), ),
drawer: CustomDrawer(), drawer: CustomDrawer(),
body: Text('Under Construction'), body: SingleChildScrollView(
child: Padding(
padding: EdgeInsets.all(20),
child: isLoading.value
? Container(
height: MediaQuery.of(context).size.height,
child: Center(
child: CircularProgressIndicator(),
),
)
: Column(
children: listCompany.value
.map((e) => Container(
margin: EdgeInsets.only(bottom: 20),
child: InkWell(
onTap: () async {
selectedCompanyID.value = e.companyid ?? "0";
selectedCompanyName.value =
e.companyname ?? "0";
final shared =
await SharedPreferences.getInstance();
final oldData = jsonDecode(
shared.getString(Constant.bearerName) ??
"");
print(oldData['token']);
final newModel = AuthDoctorModel.fromJson(
oldData['model']);
newModel.M_CompanyID = e.companyid ?? "0";
newModel.M_CompanyName = e.companyname ?? "";
final token = jsonEncode({
"date": oldData['date'],
"model": newModel,
"token": oldData['token']
});
final newAuthData = AuthModel(
token: oldData['token'], model: newModel);
await shared.setString(
Constant.bearerName, token);
ref.read(currentUserProvider.notifier).state =
newAuthData;
Navigator.pushNamed(context, homeRoute);
},
child: Card(
shadowColor:
selectedCompanyID.value == e.companyid
? Constant.bgIconHistory
: Colors.white,
surfaceTintColor:
selectedCompanyID.value == e.companyid
? Constant.bgIconHistory
: Colors.white,
// elevation: selectedCompanyID.value == e.companyid
// ? 0
// : 1,
elevation: 10,
color: selectedCompanyID.value == e.companyid
? Constant.bgIconHistory
: Colors.white,
child: Container(
padding: EdgeInsets.all(20),
width: MediaQuery.of(context).size.width,
child: Row(
children: [
Expanded(
flex: 1,
child: Icon(
Icons.corporate_fare,
color:
selectedCompanyID.value ==
e.companyid
? Constant.textRed
: Colors.black,
size: 30,
)),
SizedBox(
width: 10,
),
Expanded(
flex: 8,
child: Text(e.companyname ?? "",
softWrap: true,
maxLines: 3,
// overflow: ,
style: Constant.body1(
context: context)
.copyWith(
color: selectedCompanyID
.value ==
e.companyid
? Constant.textRed
: Colors.black,
fontSize: 25)),
),
],
)),
),
),
))
.toList()
// [
// Card(
// shadowColor: Colors.white,
// // surfaceTintColor: Colors.white,
// elevation: 0,
// color: Constant.bgIconHistory,
// child: Container(
// padding: EdgeInsets.all(10),
// width: MediaQuery.of(context).size.width,
// child: Row(
// children: [
// Icon(Icons.corporate_fare),
// SizedBox(
// width: 10,
// ),
// Text("Company",
// style: Constant.body1(context: context)
// .copyWith(color: Constant.textRed)),
// ],
// )),
// )
// ],
),
),
),
), ),
); );
} }

View File

@@ -0,0 +1,69 @@
import 'package:app_petty_cash/model/company_model.dart';
import 'package:app_petty_cash/repository/company_repository.dart';
import '../../model/list_category_model.dart';
import '../../repository/transaksi_repository.dart';
import 'package:equatable/equatable.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import '../../provider/dio_provider.dart';
import '../../repository/base_repository.dart';
abstract class ListCompanyState extends Equatable {
final DateTime date;
const ListCompanyState(this.date);
@override
List<Object?> get props => [date];
}
class ListCompanyStateInit extends ListCompanyState {
ListCompanyStateInit() : super(DateTime.now());
}
class ListCompanyStateLoading extends ListCompanyState {
ListCompanyStateLoading() : super(DateTime.now());
}
class ListCompanyStateError extends ListCompanyState {
final String message;
ListCompanyStateError({
required this.message,
}) : super(DateTime.now());
}
class ListCompanyStateDone extends ListCompanyState {
final List<CompanyModel> model;
ListCompanyStateDone({
required this.model,
}) : super(DateTime.now());
}
//notifier
class ListCompanyNotifier extends StateNotifier<ListCompanyState> {
final Ref ref;
ListCompanyNotifier({
required this.ref,
}) : super(ListCompanyStateInit());
void getListCompany({required String userID}) async {
try {
state = ListCompanyStateLoading();
final dio = ref.read(dioProvider);
final resp =
await CompanyRepository(dio: dio).getListCompany(userID: userID);
state = ListCompanyStateDone(model: resp);
} catch (e) {
if (e is BaseRepositoryException) {
state = ListCompanyStateError(message: e.message.toString());
} else {
state = ListCompanyStateError(message: e.toString());
}
}
}
}
//provider
final ListCompanyProvider =
StateNotifierProvider<ListCompanyNotifier, ListCompanyState>(
(ref) => ListCompanyNotifier(ref: ref),
);

View File

@@ -28,6 +28,27 @@ class HomeScreen extends HookConsumerWidget {
final listTransaksiHome = useState<List<ListTransaksiHomeModel>>( final listTransaksiHome = useState<List<ListTransaksiHomeModel>>(
List.empty(growable: true), List.empty(growable: true),
); );
final M_CompanyName = useState("-");
// company name
Future<String> getCompanyName() async {
final shared = await SharedPreferences.getInstance();
String M_CompanyName = "-";
if (shared != null) {
final bearerString = shared.get(Constant.bearerName).toString();
final xmodel = jsonDecode(bearerString);
if (xmodel != null) {
M_CompanyName = xmodel["model"]["M_CompanyName"];
}
}
if (M_CompanyName == "0") {
// throw BaseRepositoryException(message: 'Invalid Company ID');
}
return M_CompanyName;
}
useEffect(() { useEffect(() {
WidgetsBinding.instance.addPostFrameCallback((timeStamp) async { WidgetsBinding.instance.addPostFrameCallback((timeStamp) async {
@@ -40,6 +61,7 @@ class HomeScreen extends HookConsumerWidget {
// Navigator.popAndPushNamed(context, loginRoute); // Navigator.popAndPushNamed(context, loginRoute);
return; return;
} }
M_CompanyName.value = await getCompanyName();
}); });
return () {}; return () {};
}, []); }, []);
@@ -125,8 +147,12 @@ class HomeScreen extends HookConsumerWidget {
child: Scaffold( child: Scaffold(
appBar: AppBar( appBar: AppBar(
title: Text( title: Text(
'Home Screen', // 'Home Screen',
style: TextStyle(color: Constant.textWhite), M_CompanyName.value,
overflow: TextOverflow.ellipsis,
style: TextStyle(
color: Constant.textWhite,
),
), ),
backgroundColor: Constant.pcBtnBackgroundColor, backgroundColor: Constant.pcBtnBackgroundColor,
iconTheme: IconThemeData( iconTheme: IconThemeData(

View File

@@ -114,7 +114,7 @@ class LoginFormScreen extends HookConsumerWidget {
), ),
Container( Container(
width: Constant.getActualXPhone(context: context, x: 390), width: Constant.getActualXPhone(context: context, x: 390),
height: Constant.getActualYPhone(context: context, y: 485), // height: Constant.getActualYPhone(context: context, y: 485),
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start,

View File

@@ -158,6 +158,7 @@ class CustomDrawer extends HookConsumerWidget {
backgroundColor: Constant.textGrey.withOpacity(0.16), backgroundColor: Constant.textGrey.withOpacity(0.16),
label: Text( label: Text(
M_CompanyName.value, M_CompanyName.value,
overflow: TextOverflow.ellipsis,
style: TextStyle( style: TextStyle(
color: Constant.textGreyv2, color: Constant.textGreyv2,
), ),
@@ -320,6 +321,18 @@ class CustomDrawer extends HookConsumerWidget {
); );
}, },
), ),
Spacer(),
// Versi Aplikasi
ListTile(
title: Text(
'Versi ${Constant.version}',
style: Constant.titleH4Login(context: context)
.copyWith(color: Constant.textGrey),
),
onTap: () {},
),
], ],
), ),
), ),

View File

@@ -92,7 +92,7 @@ class HistoryRowAtasWidget extends HookConsumerWidget {
String formatDateString(String inputDate) { String formatDateString(String inputDate) {
try { try {
// Parsing tanggal dari string input // Parsing tanggal dari string input
DateTime date = DateFormat('dd-MM-yyyy','id').parse(inputDate); DateTime date = DateFormat('dd-MM-yyyy', 'id').parse(inputDate);
// Format tanggal ke '30 Des 2023' // Format tanggal ke '30 Des 2023'
String formattedDate = DateFormat('dd MMM yyyy', 'id').format(date); String formattedDate = DateFormat('dd MMM yyyy', 'id').format(date);
@@ -108,19 +108,71 @@ class HistoryRowAtasWidget extends HookConsumerWidget {
Widget getIconUrl(String categoryid) { Widget getIconUrl(String categoryid) {
List<Map<String, String>> iconDataList = [ List<Map<String, String>> iconDataList = [
{'categoryid': '1', 'url': 'https://devone.aplikasi.web.id/pettycash-media/icon/icon_13.svg'}, {
{'categoryid': '2', 'url': 'https://devone.aplikasi.web.id/pettycash-media/icon/icon_13.svg'}, 'categoryid': '1',
{'categoryid': '3', 'url': 'https://devone.aplikasi.web.id/pettycash-media/icon/icon_3.svg'}, 'url':
{'categoryid': '4', 'url': 'https://devone.aplikasi.web.id/pettycash-media/icon/icon_13.svg'}, 'https://devone.aplikasi.web.id/pettycash-media/icon/icon_13.svg'
{'categoryid': '5', 'url': 'https://devone.aplikasi.web.id/pettycash-media/icon/icon_5.svg'}, },
{'categoryid': '6', 'url': 'https://devone.aplikasi.web.id/pettycash-media/icon/icon_6.svg'}, {
{'categoryid': '7', 'url': 'https://devone.aplikasi.web.id/pettycash-media/icon/icon_13.svg'}, 'categoryid': '2',
{'categoryid': '8', 'url': 'https://devone.aplikasi.web.id/pettycash-media/icon/icon_13.svg'}, 'url':
{'categoryid': '9', 'url': 'https://devone.aplikasi.web.id/pettycash-media/icon/icon_13.svg'}, 'https://devone.aplikasi.web.id/pettycash-media/icon/icon_13.svg'
{'categoryid': '10', 'url': 'https://devone.aplikasi.web.id/pettycash-media/icon/icon_13.svg'}, },
{'categoryid': '11', 'url': 'https://devone.aplikasi.web.id/pettycash-media/icon/icon_13.svg'}, {
{'categoryid': '12', 'url': 'https://devone.aplikasi.web.id/pettycash-media/icon/icon_12.svg'}, 'categoryid': '3',
{'categoryid': '13', 'url': 'https://devone.aplikasi.web.id/pettycash-media/icon/icon_13.svg'}, 'url':
'https://devone.aplikasi.web.id/pettycash-media/icon/icon_3.svg'
},
{
'categoryid': '4',
'url':
'https://devone.aplikasi.web.id/pettycash-media/icon/icon_13.svg'
},
{
'categoryid': '5',
'url':
'https://devone.aplikasi.web.id/pettycash-media/icon/icon_5.svg'
},
{
'categoryid': '6',
'url':
'https://devone.aplikasi.web.id/pettycash-media/icon/icon_6.svg'
},
{
'categoryid': '7',
'url':
'https://devone.aplikasi.web.id/pettycash-media/icon/icon_13.svg'
},
{
'categoryid': '8',
'url':
'https://devone.aplikasi.web.id/pettycash-media/icon/icon_13.svg'
},
{
'categoryid': '9',
'url':
'https://devone.aplikasi.web.id/pettycash-media/icon/icon_13.svg'
},
{
'categoryid': '10',
'url':
'https://devone.aplikasi.web.id/pettycash-media/icon/icon_13.svg'
},
{
'categoryid': '11',
'url':
'https://devone.aplikasi.web.id/pettycash-media/icon/icon_13.svg'
},
{
'categoryid': '12',
'url':
'https://devone.aplikasi.web.id/pettycash-media/icon/icon_12.svg'
},
{
'categoryid': '13',
'url':
'https://devone.aplikasi.web.id/pettycash-media/icon/icon_13.svg'
},
]; ];
String urlFix = ""; String urlFix = "";
@@ -130,7 +182,8 @@ class HistoryRowAtasWidget extends HookConsumerWidget {
// urlFix = // urlFix =
// "https://devone.aplikasi.web.id/pettycash-media/icon/icon_$icon_category_id.svg"; // "https://devone.aplikasi.web.id/pettycash-media/icon/icon_$icon_category_id.svg";
urlFix = iconDataList[i]['url'] ?? "https://devone.aplikasi.web.id/pettycash-media/icon/icon_13.svg"; urlFix = iconDataList[i]['url'] ??
"https://devone.aplikasi.web.id/pettycash-media/icon/icon_13.svg";
} }
} }
@@ -271,21 +324,23 @@ class HistoryRowAtasWidget extends HookConsumerWidget {
mainAxisAlignment: MainAxisAlignment.end, mainAxisAlignment: MainAxisAlignment.end,
children: [ children: [
Container( Container(
// width: Constant.getActualXPhone(context: context, x: 32), width: Constant.getActualXPhone(context: context, x: 80),
height: Constant.getActualYPhone(context: context, y: 19), height: Constant.getActualYPhone(context: context, y: 24),
decoration: BoxDecoration( decoration: BoxDecoration(
color: Constant.bgIconHistory, color: Constant.bgIconHistory,
borderRadius: BorderRadius.all( borderRadius: BorderRadius.all(
Radius.circular(6.0), Radius.circular(6.0),
), ),
), ),
child: Padding( child: Align(
padding: EdgeInsets.all(2.0), alignment: Alignment.center,
child: Text( child: Text(
tipe, tipe,
style: Constant.body1_600(context: context).copyWith( style: Constant.body1_600(context: context).copyWith(
fontWeight: FontWeight.w600, fontWeight: FontWeight.w600,
color: Constant.pcBtnBackgroundColor), color: Constant.pcBtnBackgroundColor,
fontSize: 14,
),
), ),
), ),
), ),

View File

@@ -9,12 +9,10 @@ import file_selector_macos
import path_provider_foundation import path_provider_foundation
import shared_preferences_foundation import shared_preferences_foundation
import url_launcher_macos import url_launcher_macos
import video_player_avfoundation
func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
FileSelectorPlugin.register(with: registry.registrar(forPlugin: "FileSelectorPlugin")) FileSelectorPlugin.register(with: registry.registrar(forPlugin: "FileSelectorPlugin"))
PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin")) PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin"))
SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin")) SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin"))
UrlLauncherPlugin.register(with: registry.registrar(forPlugin: "UrlLauncherPlugin")) UrlLauncherPlugin.register(with: registry.registrar(forPlugin: "UrlLauncherPlugin"))
FVPVideoPlayerPlugin.register(with: registry.registrar(forPlugin: "FVPVideoPlayerPlugin"))
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 174 KiB

After

Width:  |  Height:  |  Size: 167 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.3 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 780 B

After

Width:  |  Height:  |  Size: 715 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 82 KiB

After

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

After

Width:  |  Height:  |  Size: 4.0 KiB

View File

@@ -101,10 +101,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: cross_file name: cross_file
sha256: fedaadfa3a6996f75211d835aaeb8fede285dae94262485698afd832371b9a5e sha256: "2f9d2cbccb76127ba28528cb3ae2c2326a122446a83de5a056aaa3880d3882c5"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.3.3+8" version: "0.3.3+7"
crypto: crypto:
dependency: transitive dependency: transitive
description: description:
@@ -316,10 +316,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: http name: http
sha256: d4872660c46d929f6b8a9ef4e7a7eff7e49bbf0c4ec3f385ee32df5119175139 sha256: "759d1a329847dd0f39226c688d3e06a6b8679668e350e2891a6474f8b4bb8525"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.1.2" version: "1.1.0"
http_parser: http_parser:
dependency: transitive dependency: transitive
description: description:
@@ -408,7 +408,6 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.17.0" version: "0.17.0"
<<<<<<< HEAD
js: js:
dependency: transitive dependency: transitive
description: description:
@@ -425,8 +424,6 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "4.8.1" version: "4.8.1"
=======
>>>>>>> 1696e47cd3c38c9dd74f2ad18bd84091fc6c92fa
lints: lints:
dependency: transitive dependency: transitive
description: description:
@@ -860,10 +857,10 @@ packages:
dependency: "direct main" dependency: "direct main"
description: description:
name: video_player name: video_player
sha256: fbf28ce8bcfe709ad91b5789166c832cb7a684d14f571a81891858fefb5bb1c2 sha256: "74b86e63529cf5885130c639d74cd2f9232e7c8a66cbecbddd1dcb9dbd060d1e"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.8.2" version: "2.7.2"
video_player_android: video_player_android:
dependency: transitive dependency: transitive
description: description:
@@ -876,10 +873,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: video_player_avfoundation name: video_player_avfoundation
sha256: "309e3962795e761be010869bae65c0b0e45b5230c5cee1bec72197ca7db040ed" sha256: bf1a1322bf68bccd349982ba1f5a41314a3880861fb9a93d25d6d0a2345845f0
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.5.6" version: "2.4.11"
video_player_platform_interface: video_player_platform_interface:
dependency: transitive dependency: transitive
description: description:
@@ -892,10 +889,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: video_player_web name: video_player_web
sha256: "34beb3a07d4331a24f7e7b2f75b8e2b103289038e07e65529699a671b6a6e2cb" sha256: "9c34a243785feca23148bfcd772dbb803d63c9304488177ec4f3f4463802fcb7"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.1.3" version: "2.0.17"
web: web:
dependency: transitive dependency: transitive
description: description:
@@ -937,5 +934,5 @@ packages:
source: hosted source: hosted
version: "3.1.2" version: "3.1.2"
sdks: sdks:
dart: ">=3.2.0 <4.0.0" dart: ">=3.2.0-194.0.dev <4.0.0"
flutter: ">=3.16.0" flutter: ">=3.10.0"

View File

@@ -76,20 +76,20 @@ dev_dependencies:
flutter_launcher_icons: flutter_launcher_icons:
android: "launcher_icon" android: "launcher_icon"
ios: true ios: true
image_path: "images/logo_apk.png" image_path: "images/logo_apk_v2.png"
min_sdk_android: 21 # android min sdk min:16, default 21 min_sdk_android: 21 # android min sdk min:16, default 21
web: web:
generate: true generate: true
image_path: "images/logo_apk.png" image_path: "images/logo_apk_v2.png"
background_color: "#00FFFFFF" background_color: "#00FFFFFF"
theme_color: "#00FFFFFF" theme_color: "#00FFFFFF"
windows: windows:
generate: true generate: true
image_path: "images/logo_apk.png" image_path: "images/logo_apk_v2.png"
icon_size: 48 # min:48, max:256, default: 48 icon_size: 48 # min:48, max:256, default: 48
macos: macos:
generate: true generate: true
image_path: "images/logo_apk.png" image_path: "images/logo_apk_v2.png"
# The following section is specific to Flutter packages. # The following section is specific to Flutter packages.
flutter: flutter:

Binary file not shown.

Before

Width:  |  Height:  |  Size: 780 B

After

Width:  |  Height:  |  Size: 715 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 82 KiB

After

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 82 KiB

After

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB