Not sure how others do this, but I check for Dark Theme during the Form's onPaint event - so the application can change certain things (for example controls that do not respond well to a theme change, or controls that use non-standard colors). This works for all my apps just fine. Well, except for Windows, since Lazarus doesn't change colors when you change theme in Windows.
If this is the correct way to do this; maybe we can add this as a tip to the Wiki page?