Can save expenses to local list
This commit is contained in:
		@@ -10,9 +10,11 @@ import 'package:moneymgr_mobile/utils/extensions.dart';
 | 
			
		||||
import 'package:moneymgr_mobile/utils/time_utils.dart';
 | 
			
		||||
import 'package:moneymgr_mobile/widgets/pdf_viewer.dart';
 | 
			
		||||
 | 
			
		||||
import '../utils/hooks.dart';
 | 
			
		||||
 | 
			
		||||
class ExpenseEditor extends HookConsumerWidget {
 | 
			
		||||
  final Uint8List file;
 | 
			
		||||
  final Function(BaseExpenseInfo) onFinished;
 | 
			
		||||
  final Future<void> Function(BaseExpenseInfo) onFinished;
 | 
			
		||||
  final Function()? onRescan;
 | 
			
		||||
 | 
			
		||||
  const ExpenseEditor({
 | 
			
		||||
@@ -30,6 +32,8 @@ class ExpenseEditor extends HookConsumerWidget {
 | 
			
		||||
    final costController = useTextEditingController();
 | 
			
		||||
    final timeController = useState(DateTime.now());
 | 
			
		||||
 | 
			
		||||
    final (:pending, :snapshot, :hasError) = useAsyncTask();
 | 
			
		||||
 | 
			
		||||
    // Pick a new date
 | 
			
		||||
    handlePickDate() async {
 | 
			
		||||
      final date = await showDatePicker(
 | 
			
		||||
@@ -48,10 +52,10 @@ class ExpenseEditor extends HookConsumerWidget {
 | 
			
		||||
        return;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      onFinished(
 | 
			
		||||
      pending.value = onFinished(
 | 
			
		||||
        BaseExpenseInfo(
 | 
			
		||||
          label: labelController.text,
 | 
			
		||||
          cost: int.tryParse(costController.text) ?? 0,
 | 
			
		||||
          cost: double.tryParse(costController.text) ?? 0,
 | 
			
		||||
          time: timeController.value,
 | 
			
		||||
        ),
 | 
			
		||||
      );
 | 
			
		||||
@@ -79,7 +83,13 @@ class ExpenseEditor extends HookConsumerWidget {
 | 
			
		||||
          ),
 | 
			
		||||
 | 
			
		||||
          // Submit
 | 
			
		||||
          IconButton(onPressed: handleSubmit, icon: Icon(Icons.save)),
 | 
			
		||||
          snapshot.connectionState == ConnectionState.waiting
 | 
			
		||||
              ? CircularProgressIndicator()
 | 
			
		||||
              : IconButton(
 | 
			
		||||
                  onPressed: handleSubmit,
 | 
			
		||||
                  icon: Icon(Icons.save),
 | 
			
		||||
                  color: hasError ? Colors.red : null,
 | 
			
		||||
                ),
 | 
			
		||||
        ],
 | 
			
		||||
      ),
 | 
			
		||||
      body: Column(
 | 
			
		||||
@@ -94,7 +104,10 @@ class ExpenseEditor extends HookConsumerWidget {
 | 
			
		||||
          // Cost
 | 
			
		||||
          TextField(
 | 
			
		||||
            controller: costController,
 | 
			
		||||
            keyboardType: TextInputType.number,
 | 
			
		||||
            keyboardType: TextInputType.numberWithOptions(
 | 
			
		||||
              decimal: true,
 | 
			
		||||
              signed: false,
 | 
			
		||||
            ),
 | 
			
		||||
            decoration: const InputDecoration(labelText: 'Cost'),
 | 
			
		||||
            textInputAction: TextInputAction.done,
 | 
			
		||||
          ),
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user