>source

import 'package:expenses_app/widgets/new_transaction.dart';
import 'package:expenses_app/widgets/transaction_list.dart';
import 'models/transactions.dart';
import 'package:flutter/material.dart';
main()=> runApp(ExpensesApp());
class ExpensesApp extends StatefulWidget {
  @override
  State<ExpensesApp> createState()=> _ExpensesAppState();
}
class _ExpensesAppState extends State<ExpensesApp> {
  final List<Transactions> userTransactions= [
    Transactions(
      id: "t1",
      title: "New Shoes",
      amount: 69.99,
      date: DateTime.now(),
    ),
    Transactions(
      id: "t2",
      title: "Weekly Groceries",
      amount: 13.56,
      date: DateTime.now(),
    ),
  ];
  void addNewTransaction(String txTitle, double txAmount) {
    final newTx= Transactions(
      id: DateTime.now().toString(),
      title: txTitle,
      amount: txAmount,
      date: DateTime.now(),
    );
    setState(() {
      userTransactions.add(newTx);
    });
  }
  void startAddNewTransaction(BuildContext ctx) {
    showModalBottomSheet(
      context: ctx,
      builder: (_) {
        return NewTransactions(addNewTransaction);
      },
    );
  }
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text("Expenses App"),
          backgroundColor: Colors.pink[900],
          actions: [
            IconButton(
              icon: Icon(Icons.add),
              onPressed: ()=> startAddNewTransaction(context),
            ),
          ],
        ),
        body: SingleChildScrollView(
          child: Column(
            children: [
              Container(
                width: double.infinity,
                child: Card(
                  child: Text("Chart"),
                ),
              ),
              TransactionList(userTransactions),
            ],
          ),
        ),
        floatingActionButtonLocation: FloatingActionButtonLocation.centerFloat,
        floatingActionButton: FloatingActionButton(
          child: Icon(Icons.add),
          onPressed: ()=> startAddNewTransaction(context),
        ),
      ),
    );
  }
}

여러분, 플로팅 작업 버튼과 앱 바에서 모달을 생성하는 데 문제가 있습니다. 트랜잭션을 표시하는 목록, 새 트랜잭션을 추가하는 함수 및 함수를 이미 생성했습니다. 모달을 생성하고 플로팅 작업 버튼과 앱 바에 이미 해당 기능을 배포했지만 작동하지 않습니다. 내가 뭘 잘못하고 있니?

  • 답변 # 1

    불완전한 code를 공유했기 때문에 이 'NewTransactions' 메서드가 무엇을 반환하는지 알 수 없습니다. 반면에 ShowModalBottomSheet 함수는 null을 반환해서는 안 됩니다.

    showModalBottomSheet에서 컨테이너 반환을 시도했는데 완벽하게 작동했습니다.

    showModalBottomSheet(
      context: ctx,
      builder: (_) {
         return Container(
           child: Text('This is bottom sheet'),
         );
      },
    );
    

  • 이전 alpine : 외부 js의 알파인 js 설정 데이터
  • 다음 python : 부정이 포함된 SpaCy 매처의 예기치 않은 동작