Add location permissions to AndroidManifest.xml and manual text input fields for legal documents (FSSAI, GSTIN, Udhyog, PAN)

This commit is contained in:
Sridhar R 2026-06-10 18:24:02 +05:30
parent 8096cad270
commit 4b35077fba
2 changed files with 64 additions and 0 deletions

View File

@ -3,6 +3,8 @@
<uses-permission android:name="android.permission.READ_CONTACTS" /> <uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="28" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="28" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<application <application
android:label="pozo_app" android:label="pozo_app"

View File

@ -22,6 +22,10 @@ class _BusinessSetupScreenState extends State<BusinessSetupScreen> {
final TextEditingController _nameController = TextEditingController(); final TextEditingController _nameController = TextEditingController();
final TextEditingController _gstinController = TextEditingController(); final TextEditingController _gstinController = TextEditingController();
final TextEditingController _addressController = TextEditingController(); final TextEditingController _addressController = TextEditingController();
final TextEditingController _fssaiController = TextEditingController();
final TextEditingController _udhyogController = TextEditingController();
final TextEditingController _panController = TextEditingController();
final TextEditingController _aadharController = TextEditingController();
String _selectedCategory = 'supermarket'; String _selectedCategory = 'supermarket';
bool _isNameValid = false; bool _isNameValid = false;
@ -64,9 +68,30 @@ class _BusinessSetupScreenState extends State<BusinessSetupScreen> {
_nameController.dispose(); _nameController.dispose();
_gstinController.dispose(); _gstinController.dispose();
_addressController.dispose(); _addressController.dispose();
_fssaiController.dispose();
_udhyogController.dispose();
_panController.dispose();
_aadharController.dispose();
super.dispose(); super.dispose();
} }
TextEditingController _getControllerForDoc(String docName) {
switch (docName) {
case 'GSTIN':
return _gstinController;
case 'FSSAI':
return _fssaiController;
case 'Udhyog Aadhar':
return _udhyogController;
case 'PAN':
return _panController;
case 'Aadhar':
return _aadharController;
default:
return TextEditingController();
}
}
final List<Map<String, dynamic>> _categories = [ final List<Map<String, dynamic>> _categories = [
{'id': 'supermarket', 'name': 'Supermarket', 'icon': Icons.shopping_cart}, {'id': 'supermarket', 'name': 'Supermarket', 'icon': Icons.shopping_cart},
{'id': 'restaurant', 'name': 'Restaurant', 'icon': Icons.restaurant}, {'id': 'restaurant', 'name': 'Restaurant', 'icon': Icons.restaurant},
@ -428,6 +453,43 @@ class _BusinessSetupScreenState extends State<BusinessSetupScreen> {
], ],
), ),
const SizedBox(height: 12), const SizedBox(height: 12),
Text(
'Enter $docName Number (Optional if photo uploaded)',
style: theme.textTheme.bodySmall?.copyWith(
fontWeight: FontWeight.bold,
color: Colors.grey[700],
),
),
const SizedBox(height: 6),
TextField(
controller: _getControllerForDoc(docName),
textCapitalization: TextCapitalization.characters,
decoration: InputDecoration(
hintText: 'e.g. Enter $docName number',
prefixIcon: Icon(icon, size: 16, color: Colors.grey[500]),
),
style: const TextStyle(fontWeight: FontWeight.bold),
),
const SizedBox(height: 16),
Row(
children: [
Expanded(child: Divider(color: Colors.grey[300])),
Padding(
padding: const EdgeInsets.symmetric(horizontal: 8.0),
child: Text(
'OR UPLOAD PHOTO',
style: TextStyle(
fontSize: 10,
fontWeight: FontWeight.bold,
color: Colors.grey[500],
letterSpacing: 0.5,
),
),
),
Expanded(child: Divider(color: Colors.grey[300])),
],
),
const SizedBox(height: 12),
if (isUploaded) ...[ if (isUploaded) ...[
Container( Container(
padding: const EdgeInsets.all(12), padding: const EdgeInsets.all(12),