Bitcoin already has time lock transactions which can be easily used in this sense.
A time-lock transaction can not be added into a block before a certain block or time is reached, so you can spend those bitcoins until that time limit is reached.
This is why you can create two transactions every year, for example, where you send your bitcoins to yourself with a usual transaction and then spend them in a time-lock transaction to your children. If you are unable to send a new transaction until the time runs out, your time-lock transaction will be confirmed and your children will be able to spend your bitcoins.
You would be able to create a wallet where this is done by default whenever you spend your bitcoins.
I think you can use lightning network with this as well, since this is a very basic feature that every transaction can have without messing with the scripts inside the transaction.